如何在MySQL中实现n-to-n关系的双连接

时间:2009-12-03 13:24:37

标签: mysql join

在我的数据库中,我有汽车和人。 在汽车和人之间是一个n到n'的'驱动' - '由'关系驱动。

我想查询数据库以获取由特定人员(例如“约翰”)驾驶并且也由其他人驾驶的所有汽车的列表。我想查询每辆车显示有多少(其他)人在驾驶它。

以上是我实际问题的简化。供额外参考; 汽车通常由1至4人驾驶,但1人驾驶多达5000辆汽车

是否可以在单个查询中执行此操作,如果是,如何执行此操作?

问候,

科恩

1 个答案:

答案 0 :(得分:2)

这样的事情能做到吗?

SELECT  p.PersonName, COUNT(d2.PersonId)
FROM    Drives d
        INNER JOIN
                Person p
                ON d.PersonId = p.PersonId
        LEFT JOIN
                Drives d2
                ON d.CarId = d2.CarId
                AND d.PersonId != d2.PersonId
GROUP BY p.PersonName

要仅限制由其他人驾驶的汽车,请将LEFT JOIN更改为INNER JOIN。