2016-07-04 26 views
1

Benutzung von MySQL, ich möchte diese alle in einem Einsatz tun:SQL-Abfrage aus mehreren Tabellen mit Bedingung

  1. Tabelle T1 enthält Spalte Ca & Cb. T1 befindet sich in der Datenbank D1. In die Tabelle T1 einfügen und die Spalten Ca, Cb angeben.
  2. Tabelle T2 enthält Spalte C2. T2 befindet sich in der Datenbank D2. Set T1.Ca Wert mit T2.C2
  3. Tabelle T3 enthält Spalte C3 & C4. T3 befindet sich in der Datenbank D2. Verwenden Sie die T2.C2 Wert T3.C3 und verwenden Sie den C4-Wert der gleichen Zeile abzufragen, um zu setzen T1.Cb

so habe ich:

insert into T1(Ca, Cb) 
select C2 
from D2.T2 
union 
select C4 
from D2.T3 
where C3=T2.C2; 

Fehlercode: 1054 Unknown Spalte 'T2.C2' in 'where clause'

Bitte helfen Sie. Vielen Dank im Voraus.

Antwort

1

Wenn ich verstehe correcly sollten Sie einen Join verwenden und nicht eine Vereinigung

insert into D1.T1(Ca, Cb) 
    select T2.C2, T3.C4 
    from D2.T2 
    INNER JOIN D2.T3 on T2.C2 = T3.C3 

die zweite Auswahl der Union wissen nicht, den Inhalt der firts wählen .. so dass Sie den Fehler haben

Unknown column 'T2.C2' in 'where clause'

0

Unioned-Abfragen sind unabhängig voneinander.
Sie möchten diese Tabellen verbinden.

select C2,C4 
from D2.T2 a 
INNER JOIN D2.T3 b ON b.C3=a.C2;