2010-12-31 9 views
5

HALLO,einen eindeutigen Wert auswählen in mehreren Tabellen (SQL)

Ich habe eine Datenbank mit 3 Tabellen TAB1, TAB2, TAB3, die genau die gleichen Spalten haben, zum Beispiel:

TAB1 
cola, colb, colc, cold 
TABB 
cola, colb, colc, cold 
... 

Now I möchten uns bei allen distinct „colb“ Werten suchen, ist dies die Abfrage:

SELECT DISTINCT colb FROM TAB1 

funktioniert perfekt, aber jetzt würde ich alle unterschiedlichen „colb“ Werte in meinen 3-Tabellen „TAB1“, „TAB2“, „TAB3 suchen ":

SELECT DISTINCT colb FROM TAB1, TAB2, TAB3 

Und jetzt SQL mir einen Fehler zurück: „Spalte‚colb‘in Feldliste ist mehrdeutig“ Nach einiger Suche, verstand ich, dass war, weil ‚colb‘ Spalte in meinen 3 Tabellen vorhanden sind.

Also wie suche in meinen 3 Tabellen einen eindeutigen Wert aus der gleichen Spalte? Ich kann den LEFT JOIN nicht benutzen, weil ich in allen 3 Tabellen und nicht in einem von ihnen suchen kann.

Haben Sie eine Idee? Danke

+0

Dankten jeder benutzen kann !!! – Jensen

Antwort

5

Diese einzige Abfrage mit Union wird sich um unterschiedliche Werte für Sie kümmern.

select colb from tab1 union 
    select colb from tab2 union 
    select colb from tab3; 
+0

Danke, das mein Problem lösen !!! – Jensen

2
select colb from tab1 union 
select colb from tab2 union 
select colb from tab3 
0
SELECT DISTINCT TAB1.colb,TAB2.colb,TAB3.colb FROM TAB1, TAB2, TAB3 
+1

Dies wird höchstwahrscheinlich zu viele Ressourcen verschwenden, um die Antwort zu erhalten. Abhängig von der Größe von TAB1, TAB2 und TAB3 darf dies niemals enden. – cherouvim

0

select distinct Cola aus tab1 Vereinigung

Distinct Cola SELECT aus tab2 Vereinigung

Distinct Cola SELECT von tab3

+1

Union behandelt das Besondere für Sie. Es muss nicht in die Abfrage aufgenommen werden. – cherouvim

+0

Genau. Gehen Sie für Ronnis Lösung. !!! –

0

In sybase, können Sie die Syntax verwenden, die @cherouvim gepostet, kann man sich die Unterabfrage als Tabelle vorstellen.

Sie auch Temptabellen

select colb into #t1 from TAB1 
insert into #t1(colb) values(select colb from TAB2) 
insert into #t1(colb) values(select colb from TAB3) 
select distinct colb from #t1 
Verwandte Themen