2010-07-15 49 views
2

我有三個表:table1,table2,table3。mysql中的所有組合輸出

表1包含:

 
Title1 desc 
LHR  LONDON HEATHROW 
LGW  LONDON GATWICK 

表2包含:

 
Title2 desc2 
W1  TESTW1 
W2  TESTW2 

表3包含:

 
vehicle desc3 
SALOON  SALOON DESC 
VIP  VIP DESC 
EXECUTIVE EXECUTIVE DESC 

我要輸出所有組合是這樣的:

 
title-common title-common2 vehicle  
LHR   W1   saloon 
LHR   W1   VIP 
LHR   W1   EXECUTIVE 
LHR   W2   saloon 
LHR   W2   VIP 
LHR   W2   EXECUTIVE 
LGW   W1   saloon 
LGW   W1   VIP 
LGW   W1   EXECUTIVE 
LGW   W2   saloon 
LGW   W2   VIP 
LGW   W2   EXECUTIVE 
W1   LHR   saloon 
W1   LHR   VIP 
W1   LHR   EXECUTIVE 
W2   LHR   saloon 
W2   LHR   VIP 
W2   LHR   EXECUTIVE 
W2   LGW   saloon 
W1   LGW   VIP 
W1   LGW   EXECUTIVE 
W2   LGW   saloon 
W2   LGW   VIP 
W2   LGW   EXECUTIVE 

我應該如何編寫這個查詢?我嘗試了交叉連接,但是我沒有得到我想要的。

+0

爲什麼在您所需的輸出中有重複的行?這只是一個錯誤的問題? (我假設它是一個錯誤,所以我已經編輯了這個問題) – 2010-07-15 10:59:30

+0

這些表之間的關係是什麼。你能解釋一下嗎? – Sadat 2010-07-15 11:00:50

回答

2

看起來,您希望所有對中的一個項目來自表格1,另一個項目來自表格2,無論順序如何。您可以通過創建兩個交叉連接並採用UNION來實現此目的:

(
    SELECT 
     Title1 AS title-common, 
     Title2 AS title-common2, 
     vehicle 
    FROM table1 
    CROSS JOIN table2 
    CROSS JOIN table3 
) 
UNION 
(
    SELECT 
     Title2 AS title-common, 
     Title1 AS title-common2, 
     vehicle 
    FROM table1 
    CROSS JOIN table2 
    CROSS JOIN table3 
) 
+0

看到看到我沒有得到這種組合

 W1 LHR saloon W1 LHR VIP W1 LHR EXECUTIVE W2 LHR saloon W2 LHR VIP W2 LHR EXECUTIVE W2 LGW saloon W1 LGW VIP W1 LGW EXECUTIVE W2 LGW saloon W2 LGW VIP W2 LGW EXECUTIVE 
Bharanikumar 2010-07-15 11:02:44

+0

@Bharanikumar:看到我更新的答案:這是否適合你? – 2010-07-15 11:19:57