2010-12-16 31 views
0

,如果我有這兩個表:錯mysql的輸出

表1

AID1____________FID____________value1 

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

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

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

表2

AID2____________FID____________value2 

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

當我執行以下查詢:

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

from table1,table2 

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

我得到:

value1_____________Value2_____AID1______AID2 

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

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

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

但是這不是所需的輸出,因爲有些值應該是NULL,但我得到的值是加倍! 任何人都可以幫忙嗎?

這是我想要的輸出: VALUE1_ _ ____值2_ AID1 __ _AID2

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

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

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

哪些值加倍? – aioobe 2010-12-16 14:58:58

+0

您忘記加入表 – David 2010-12-16 15:02:07

+0

結果集尚不清楚。解釋應該檢索的結果。 – zerkms 2010-12-16 15:08:17

回答

1

更改您的查詢

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

from table1,table2 

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

這將給笛卡爾生產,而不是OP的預期。 – zerkms 2010-12-16 15:06:05

0

我已經嘗試了你描述的場景它按預期工作。

表1:

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

表2:

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

結果:

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

你是如何運行的呢?

0

我想你想要一個工會。

選擇table1.value1,table1.AID1, 從表1 其中table1.FID = 1個

工會

選擇table2.value2,table2.AID2 從表2 其中table2.FID = 1