سؤال

ولدي "الجدول القاموس" ودعا 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...

هل هناك سبب ما كنت تريد أن تفعل ذلك في بيان واحد؟ شخصيا، كنت مجرد كتابة بيان إدراج لكل صف. اعتقد انك يمكن أيضا إنشاء جدول مؤقت مع جميع أنواع جديدة ومن ثم الانضمام أنه مع بطاقة الأحوال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top