2009-05-13 10 views
18

Jak napisać instrukcję INSERT, jeśli otrzymam wartości colA z TableX, colB z TableY i colC z TableZ?SQL: INSERT INTO ... VALUES..SELECT

np: INSERT INTO TableA (cola, colB, colC) VALUES

Wszelkie pomysły, czy jest możliwe (,??)?

+0

to jest Java? szwy są prostym problemem SQL, czy też czegoś mi brakowało? –

+0

Tag Java wydaje się być dodany przez przypadek, zobaczę, czy mogę go usunąć – Andomar

+0

Co stało się z oryginalnym plakatem? Brak pkt. Czy istnieje szansa, że ​​administrator może wybrać odpowiedź tutaj? –

Odpowiedz

33
INSERT INTO TableA(colA, colB, colC) 
    SELECT TableX.valA, TableY.valB, TableZ.valC 
    FROM TableX 
    INNER JOIN TableY ON :...... 
    INNER JOIN TableZ ON ........ 

Oczywiście Tablex, Tabley i TAbleZ może również być związane w jakiś inny sposób (nie INNER JOIN).

Jeśli nie można znaleźć żadnej relacji między tabelami w ogóle można również zrobić trzy oddzielne

SELECT @value1 = valA FROM TableX WHERE ...... 
SELECT @value2 = valB FROM TableY WHERE ...... 
SELECT @value3 = valC FROM TableZ WHERE ...... 

a następnie wkładkę tak:

INSERT INTO TableA(colA, colB, colC) 
      VALUES(@value1, @value2, @value3) 

To ostateczny ostateczności ty nie może wyrazić wszystkiego w jednym oświadczeniu SELECT.

Marc

+0

valA, valB, valC jest z różnych tabel ... –

4
Insert into TableA (ColA, ColB, ColC) . . . 

Musi być nazwy kolumn, jak są w Tabeli A. Nie ma nic złego w

Insert into TableA (ColA, ColB, ColC) . . . 
Select TableX.Col1, TableY.Col1, TableZ.Col5 
From TableX, TableY, TableZ 
Where . . . 
+0

ok..wielkie ... używam tego w java, więc jeśli colC otrzymuje wartości frm metody (np: method())? –

+0

Przepraszam, ja nie robię Javy –

22

W odpowiedzi na odpowiedź marc_s można wyszukiwać z niepowiązanych tabel w a, ponieważ wybierz:

INSERT INTO TableA 
    (colA, colB, colC) 
SELECT 
    (SELECT valA FROM TableX WHERE ...), 
    (SELECT valB FROM TableY WHERE ...), 
    (SELECT valC FROM TableZ WHERE ...) 
+4

+1 - wspaniała odpowiedź - dziękuję! Każdego dnia uczysz się czegoś nowego .... –

Powiązane problemy