2009-05-13 17 views
18

TableX'den ColA değerleri, TableB'den ColB ve TableZ'den colC değerini alırsam INSERT deyimini nasıl yazarım?SQL: INSERT INTO ... VALUES..SELECT

örn: TableA INSERT INTO (colA, colB, colC) DEĞERLER mümkünse

herhangi bir fikir (???)? Tabii

+0

bu Java? Basit bir SQL problemi mi oluyor yoksa bir şey mi özledim? –

+0

Java etiketi kaza eklenmiş gibi görünüyor, görebiliyor musunuz? – Andomar

+0

Orijinal postere ne oldu? Pts yok. Bir yönetici burada bir cevap seçebilir mi? –

cevap

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

, TableX Tabley ve TAbleZ da (İÇ değil JOIN) başka bir şekilde ilgili olabilir.

sen HİÇ tablolar arasında bir ilişki olamaz, ayrıca yapabileceği üç ayrı sonra

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

ve

böyle bir ekleme: nihai son çare var

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

, sen her şeyi tek bir SELECT ifadesinde ifade edemez.

Marc

+0

valA, valB, valC farklı tablolardan ... –

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

Tablo A'da içindedir Sen seçim yapmak istiyorsanız tabloları birleştirmek gerekir

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

tamam..great ... java'da bunu kullanıyorum, bu yüzden eğer colC frm değerlerini alıyorsa (örn: method())? –

+0

Üzgünüz, ben Java –

22
:

www.w3schools.com/sql/sql_join.asp

Ayrıca, SQL temellerini kapsadığını www.simple-talk.com de çocuklar bu ücretsiz PDF kitabı kontrol etmek isteyebilirsiniz

marc_s'ın cevabına karşılık olarak, alakasız tablolardan, şu şekilde bir seçim yapın:

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

+ 1 yapmıyorum - harika yanıt - teşekkürler! Her gün yeni bir şeyler öğreniyorsun .... –