Как сформировать запрос mysql для сбора данных из 3х таблиц?
Имеется три таблицы:
Person(PersonID, Name),
Skill(SkillID, Name),
Questionary(PersonID, SkillID, Level)
Требуется получить ответ вида:
Person1 Skill1 level1
Person1 Skill1 none
и так далее. То есть, для каждого Person нужно получить Skill, даже если соответствующей записи нет в Questionary
Пока получается получить такое для конкретного Person:
select Person.PersonID, Skill.SkillID from Person inner join Questionary on Person.PersonID=Questionary.PersonID and Person.PersonID=4 right join Skill on Questionary.PersonID=Person.PersonID and Questionary.SkillID=Skill.SkillID;
+----------+---------+
| PersonID | SkillID |
+----------+---------+
| 4 | 17 |
| 4 | 18 |
| NULL | 19 |
| NULL | 20 |
| NULL | 21 |
+----------+---------+
SELECT
p.`Name` as `PersonName`,
s.`Name` as `SkillName`,
q.`Level` as `QuestionaryLevel`
FROM
`Questionary` q
LEFT JOIN `Person` p ON p.`PersonID` = q.`PersonID`
LEFT JOIN `Skill` s ON s.`SkillID` = q.`SkillID`
Дает то же самое - если для какого-то Skill и Person нет записи в Questionary, то это выведено не будет. Тогда как требуется выводить все Skill для каждого юзера, даже если в Questionary такого нет. то есть, на месте Level будет null