2010-07-15 48 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