Я схожу с ума по этому поводу некоторое время, и я уверен, что это проще, чем я сейчас делаю, но не могу найти ответ, вероятно, потому что я не могу указать правильный вопрос.
Я объясню на простом примере: допустим, у меня есть 3 таблицы
отцов:
| id | name |
сыновей:
| id |father_id | name |
книги:
| id | son_id | father_id |name |
Я хочу запрос, который бы дал мне:
[father] | [son] | [book]
--------- ---- -----
father1| son1 | book1
father1 |son1 | book5
father1,son2,book2
father1,none,book3
father1,none,book4
father2...
У меня есть:
select fathers.name,sons.name,books.name
from fathers left join sons on son.father_id=fathers.id
left join books on ...
Цените любую помощь здесь!
Обновление:
Кажется, когда книга назначается сыну, она также назначается отцу.
вот мой текущий запрос:
select fathers.name,sons.name,books.name
from
fathers
left join sons on son.father_id=fathers.id
left join books on (
(books.father_id=fathers.id and books.son_id is null)
or ((books.son_id=sons.id )
)
group by fathers.name,sons.name,books.name
Но это не дает мне условного «нет» в колонке сына.