开发者

how to implement a double join in n-to-n relation in MySQL

In my database I have cars and persons. Between the cars and the persons is an n-to-n 'drives'-'is driven by' relationship.

I would like to query the database to get a list of all the cars that are driven by a specific person (say 'john') and that are also driven by other persons. I would like the query to show per car how many (other) persons are driving it.

The above is a simplification of my actual problem. For extra reference; Cars are typically driven by 1 to 4 persons, but 开发者_JAVA百科1 person drives up to 5000 cars

Is it possible to do this in a single query, and if so, how?

greetings,

Coen


Does something like this do the trick?

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

To restrict to only cars that are drive by other people, change LEFT JOIN to INNER JOIN.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜