как реализовать двойное соединение в n-to-n отношении в MySQL - PullRequest
1 голос
/ 03 декабря 2009

В моей базе данных есть машины и люди. Между автомобилями и людьми есть n-to-n 'диски' - 'движимые' отношениями.

Я бы хотел запросить базу данных, чтобы получить список всех автомобилей, которыми управляет конкретный человек (скажем, "Джон"), а также других людей. Я бы хотел, чтобы в запросе на каждую машину указывалось, сколько (других) человек ее водят.

Выше приведено упрощение моей актуальной проблемы. Для дополнительной справки; Автомобили обычно управляются от 1 до 4 человек, но 1 человек ездит до 5000 автомобилей

Возможно ли сделать это одним запросом, и если да, то как?

привет

Coen

1 Ответ

2 голосов
/ 03 декабря 2009

Делает ли что-то подобное свое дело?

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...