الخلية إدراج سجلات متعددة مع اختيار
سؤال
ولدي "الجدول القاموس" ودعا car_status يحتوي على عمود "معرف" وعمود "الحالة".
car_status
id status
1 broken
2 fixed
3 working
4 fast
5 slow
ولدي جدول يسمى السيارات مع الأعمدة: الهوية، ونوع، status_id
cars
id type status_id
1 jeep 1
2 ford 3
3 acura 4
وأنا على أمل أن إدراج سجلات متعددة في السيارات ونقدم لهم كل حالة المرتبطة "العمل". ما هو أفضل / أسهل طريقة؟ أعرف أنني أستطيع أن الاستعلام والعثور على status_id أن "تعمل"، ومن ثم القيام استعلام إدراج، ولكن هناك على أية حال للقيام بذلك مع الاستعلام إدراج واحد باستخدام صلة أو تحديد؟
وحاولت الاشياء مثل:
INSERT INTO cars (type, status_id)
VALUES
('GM',status_id),
('Toyota',status_id),
('Honda',status_id)
SELECT id as status_id
FROM car_status
WHERE status = "working"
وشكرا!
المحلول
DECLARE temp_status_id INT;
SELECT status_id
INTO temp_status_id
FROM car_status;
INSERT INTO cars (type, status_id)
VALUES ('GM',temp_status_id),
('Toyota',temp_status_id),
('Honda',temp_status_id);
نصائح أخرى
وهذا هو MS SQL، ولكن أعتقد أنك تستطيع أن تفعل شيئا من هذا القبيل:
DECLARE @status_id int
SELECT @status_id = status_id FROM car_status WHERE status = 'working'
INSERT INTO cars (type, status_id)
SELECT 'GM', @status_id
UNION
SELECT 'Toyota', @status_id
UNION...
هل هناك سبب ما كنت تريد أن تفعل ذلك في بيان واحد؟ شخصيا، كنت مجرد كتابة بيان إدراج لكل صف. اعتقد انك يمكن أيضا إنشاء جدول مؤقت مع جميع أنواع جديدة ومن ثم الانضمام أنه مع بطاقة الأحوال.
لا تنتمي إلى StackOverflow