我試圖做出一個語句來從3個相關表中提取數據(因爲它們都共享一個公共字符串索引)。我無法阻止MySQL返回兩個表的結果,使得結果集比我想要的要大得多。每個表都有不同數量的列,我寧願不要使用UNION,因爲每個表中的數據是分開的。從MySQL中不同列的表上刪除多重連接結果中的重複項
下面是一個例子:
表X是主表,並具有字段甲B.
表Y具有字段AC D.
表Z具有字段AEF G.
-
我的理想結果將採用如下格式:
A1 B1 C1 D1 E1 F1 G1
A1 B2 C2 D2 00 00 00
A2 B3 C3 D3 E2 F2 G2
A2 B4 00 00 E3 F3 G3
等等
-
下面是我曾嘗試最簡單的SQL顯示我的問題(即,它返回y * Z從A通過數據索引的產品:
SELECT DISTINCT *
FROM X
LEFT JOIN Y USING (A)
LEFT JOIN Z USING (A)
-
我曾嘗試通過子句增加一組對Y和Z字段但是,如果我只按一列,它只返回與在該式柱的每個唯一值相匹配的第一結果n(即:A1 C1 E1,A1 C2 E1,A1 C3 E1)。如果我按兩列分組,它將再次返回兩個表的乘積。
我也試過在查詢中做多個select語句,然後加入結果表,但我再次收到表格的輸出結果作爲輸出。
基本上我想合併三個選擇語句的結果到一個單一的結果,沒有它給我所有的數據組合。如果我需要,我可以採取多重查詢。但是,由於它們都包含一個共同的索引,我覺得應該有一種方法可以在我缺少的一個查詢中執行。
感謝您的任何幫助。
好吧,也許這將使它更容易理解我的問題。只需忽略表X並嘗試在字段A上連接表Y和Z. IE:SELECT * 從Y內部連接Z使用(A)。您會看到這將輸出兩個表的產品。 – Alfred 2011-04-24 02:33:26