2010-12-16 8 views
0

wenn ich diese beiden Tabellen:falsch mysql Ausgang

Table1

AID1____________FID____________value1 

1------------1----------12 

7------------2-----------1 

8------------1-----------1 

Table2

AID2____________FID____________value2 

7------------1----------3.3 

Wenn ich führen Sie die folgende Abfrage:

Select table1.value1, table2.value2, table1.AID1, table2.AID2 

from table1,table2 

where table1.FID = 1 or table2.FID = 1 

erhalte ich:

value1_____________Value2_____AID1______AID2 

12----------------- 3.3--------1--------7 

1------------------3.3---------7--------7 

1------------------3.3---------8---------7 

Aber das ist nicht die gewünschte Ausgabe, denn einige Werte sollten NULL sein, aber was ich bekomme sind Werte verdoppelt! Kann jemand helfen?

Dies ist meine gewünschte Ausgabe: value1_ _ ____Value2_ AID1 __ _AID2

12----------------- 3.3--------1--------7 

1------------------NULL---------7--------NULL 

1------------------NULL---------8---------NULL 
+0

Welche Werte sind doppelt? – aioobe

+0

Sie haben vergessen, den Tabellen beizutreten – David

+0

Die Ergebnismenge ist nicht klar. Erklären Sie, welches Ergebnis abgerufen werden soll. – zerkms

Antwort

1

Ändern Sie Ihre Anfrage an

Select table1.value1, table2.value2, table1.AID1, table2.AID2 

from table1,table2 

where table1.FID = 1 AND table2.FID = 1 
+0

Dies wird kartesische Produktion geben, nicht was das OP erwartet. – zerkms

0

Ich habe habe das von dir beschriebene Szenario ausprobiert und es funktioniert wie erwartet.

Tabelle 1:

AID1 -> int 
FID -> int 
value1 -> float 

Table2:

AID2 -> int 
FID -> int 
value2 -> float 

Ergebnis:

value1, value2, AID1, AID2 
12,3.3,1,7 
1,3.3,7,7 
1,3.3,8,7 
NULL,3.3,NULL,7 

Wie Sie es laufen?

0

Ich denke, Sie wollen eine Union.

Select table1.value1, table1.AID1, von table1 wo table1.FID = 1

Vereinigung

Select table2.value2, table2.AID2 von table2 wo table2.FID = 1