mySQL inserendo più record con una selezione
Domanda
Ho una tabella dei dizionari " chiamato car_status che ha una colonna "id" e una colonna "status".
car_status
id status
1 broken
2 fixed
3 working
4 fast
5 slow
Ho una tabella chiamata cars con le colonne: id, type, status_id
cars
id type status_id
1 jeep 1
2 ford 3
3 acura 4
Spero di inserire più record nelle auto e dare loro tutto lo stato associato a "funzionamento". Qual è il modo migliore / più semplice? So di poter eseguire una query e trovare lo status_id che sta funzionando " e quindi eseguire una query di inserimento, ma c'è comunque modo di farlo con una query di inserimento utilizzando un join o selezionare?
Ho provato cose come:
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"
Grazie!
Soluzione
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);
Altri suggerimenti
Questo è MS SQL, ma penso che tu possa fare qualcosa del genere:
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...
C'è qualche motivo per cui vuoi farlo in una singola istruzione? Personalmente, scriverei solo un'istruzione insert per ogni riga. Immagino che potresti anche creare una tabella temporanea con tutti i nuovi tipi e poi unirti a quella con lo status ID.