-1

我有 5 个关系:A、B、A_B、C、D。我正在尝试获取 A&B 对并选择有关的更多信息

SELECT A.aName, B.bName, C.cName, D.dName 
FROM `A` , `B` , `A&B` , `C` , `D`
WHERE B.bName= A_B.bName
AND A.aName = A_B.aName
AND A.cName = C.cName
AND C.dName = D.dName

但这不是我想的那样,它只代表每个 A 一个条目,即使 A 有更多的 A_B 映射。

更新2:

表A有

-------------
t1key | t2key
--------------
a1        c1
a2        c2
a3        c1
a4        c1


Table B
------------
t3key | t4key
-------------
b1      XXX
b2      XXX
b3      XXX
b4      XXX
b5      XXX


Table A&B
------------
t1key | t3key
-------------
a1      b1
a1      b2
a1      b3
a3      b1
a4      b2


Table C
------------
t2key | t4key
-------------
c1      d1
c2      d2
c3      d1
c4      d3
c5      d1

结果应该是

a1   b1 c1 d1
a1   b2 c1 d1
a1   b3 c1 d1
a3   b1 c2 d2
a4   b2 c1 d1

如您所见, a1 在此结果中有 3 个条目...

4

1 回答 1

0

您应该做的第一件事是避免“老式”隐式连接语法并学习使用显式语法(使用ON条件的连接)。这将使一切更容易理解。接下来了解不同类型的连接,尤其是LEFT JOIN.

考虑到这一点,看看这是否符合您的要求:

SELECT A.aName, B.bName, C.cName, D.dName
FROM  `A&B`
LEFT JOIN `A`
ON   A.aName = A_B.aName
LEFT JOIN `B`
ON   B.bName = A_B.bName
LEFT JOIN `C` 
ON   C.cName = A.cName
LEFT JOIN `D`
ON  D.dName = C.dName
于 2013-01-12T16:01:35.217 回答