2009-12-03 168 views
1

在我的數據庫中有汽車和人員。 汽車與人之間是一個n對n'驅動' - '是由'關係驅動的。如何在MySQL中實現n對n關係的雙連接

我想查詢數據庫以獲取由特定人員駕駛的所有汽車(如'john')並且也由其他人駕駛的汽車列表。我希望查詢能夠顯示每輛車有多少(其他)人正在駕駛它。

以上是對我實際問題的簡化。爲了額外的參考; 汽車通常由1至4人駕駛,但1人駕駛5000輛汽車

是否可以在單個查詢中執行此操作,如果是這樣,如何執行此操作?

問候,

科恩

回答

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。

相關問題