У меня есть несколько таблиц, которые я хочу объединить для одного большого запроса.Критерии поиска основаны на двух таблицах: section_types
и sections
.Я хочу вытащить все section_types
и связанные с ними sections
, где sections
соответствуют определенным критериям, плюс все section_types
, которые активны, но с которыми sections
не связаны.Это похоже на базовый LEFT JOIN
, но я думаю, потому что некоторые из моих критериев фильтрации основаны на sections
, я не могу получить section_types
, у которых нет связанных sections
`section_types`
id | name | active
---+------+-------
1 | a | 1
2 | b | 0
3 | c | 1
`sections`
type | issue | location
-----+-------+----------
1 | 0611 | 1
2 | 0611 | 1
1 | 0511 | 1
СкажиЯ хочу получить все разделы для выпуска 0611 в местоположении 1, а также любые пустые типы разделов.Вот так:
(отредактировано, см. Ниже)
Но я получаю только section_types
, которые имеют sections
.Таким образом, в этом запросе section_types
строка 3 не будет отображаться.Что я делаю не так?
РЕДАКТИРОВАТЬ:
Я получаю все section_types
сейчас, но не все sections
мне нужно.Я думаю LEFT JOIN
сделает это.Может быть много sections
для каждого section_type
или ни одного.Мой запрос на данный момент:
SELECT * FROM `section_types` st
RIGHT JOIN `sections` s
ON s.type=st.id
AND s.issue='0611'
AND s.location=1
WHERE st.active OR s.issue IS NOT NULL
ORDER BY st.id
, который получает меня:
id | name | active | issue | location
---+------+--------+-------+---------
1 | a | 1 | 0611 | 1
2 | b | 0 | 0611 | 1
3 | c | 1 | |
, но мне все еще нужен второй тип-1 section