У меня есть таблица с именем Languages
, в которой хранятся языки, на которых может разговаривать каждый человек, хранящийся в таблице Persons
, затем у меня есть таблица с именем Homework
, в которой хранятся все домашние задания, которые должен выполнять каждый человек, но связанныена язык.Я могу выбрать домашнюю работу, которую 1 человек должен выполнить для языка 1 (левое соединение), но также хотел бы иметь возможность выбрать в том же запросе язык, на котором 1 человек может говорить.Может ли кто-нибудь подсказать мне, как этого добиться?При левом соединении с языками результаты будут испорчены, как и в случае с языками в таблице домашних заданий.
«Много языков и людей»: «Много2». То же самое относится и к «Домашней работе» и «Персоналам».
Это работает, но не получается, когда я добавляю секунду left join
:
SELECT p.id, l.id, h.id
FROM Persons AS p
LEFT JOIN Homework AS h ON h.person_id = p.id
#LEFT JOIN Languages AS l ON l.person_id = p.id #Screws the result multipliying by the number of available languages
WHERE p.id = 1
AND h.language_id = 1
Iхотел бы объединить приведенный выше запрос и следующее:
SELECT *
FROM languages
WHERE person_id=1