Frage

Ich habe einen „Wörterbuch Tabelle“ bezeichnet car_status, die eine ‚id‘ Spalte und eine Spalte ‚Status‘ hat.

car_status
id     status
1      broken
2      fixed
3      working
4      fast
5      slow

Ich habe eine Tabelle namens Autos mit den Spalten: id, Typ, status_id

cars
id    type    status_id
1     jeep     1
2     ford     3
3     acura    4

Ich hoffe, mehrere Datensätze in Autos setzen und sie alle den Status mit „Arbeit“ in Verbindung geben. Was ist der beste / einfachste Weg? Ich weiß, ich kann abfragen und die status_id finden, die „Arbeit“ ist, und dann ein Insert-Abfrage tun, sondern ist es trotzdem, es mit einer INSERT-Abfrage zu tun, mit einer Verknüpfung oder wählen Sie?

Ich habe versucht, Sachen wie:

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"

Danke!

War es hilfreich?

Lösung

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);

Andere Tipps

Dies ist MS SQL, aber ich denke, Sie so etwas tun kann:

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...

Gibt es einen Grund, warum Sie es in einer einzigen Anweisung zu tun? Persönlich würde ich nur eine Insert-Anweisung für jede Zeile schreiben. Ich denke, man auch eine temporäre Tabelle mit allen neuen Typen erstellen könnte und dann kommen, dass mit der Status-ID.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top