У меня есть следующие таблицы:
страницы
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| page_id | int(11) | NO | PRI | NULL | auto_increment |
| type | varchar(20) | NO | | NULL | |
| categories | varchar(255) | NO | | NULL | |
| title | varchar(255) | NO | MUL | NULL | |
| text | longtext | NO | MUL | NULL | |
+------------+--------------+------+-----+---------+----------------+
заказ
+---------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| page_id | int(10) unsigned | NO | PRI | NULL | |
| key | varchar(255) | NO | PRI | NULL | |
| value | longtext | NO | | NULL | |
+---------+------------------+------+-----+---------+-------+
Я хочу присоединиться к таблицам таким образом, где:
1) возвращаются все записи из первой таблицы LEFT JOIN custom ON pages.page_id = custom.page_id
2) pages.type IN ('type_a', 'type_b', 'type_c')
3) "ключ" из второй таблицы имеет значение "голосов" custom.key = 'votes'
Я сделал все до сих пор, но третье условие - проблема. Если для key = 'votes'
нет записи в таблице пользовательский, запрос возвращает только данные с записями. Я хочу вернуть NULL
, если отсутствует запись.
Мне нужно key = 'votes'
, потому что у меня есть другие записи для этого page_id, где ключ не является "голосом", и это дублирует строки из страниц