У меня есть следующие таблицы:
страницы :
+------------+--------------+------+-----+---------+----------------+
| 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 | |
+------------+--------------+------+-----+---------+----------------+
custom :
+---------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| page_id | int(10) unsigned | NO | PRI | NULL | |
| key | varchar(255) | NO | PRI | NULL | |
| value | longtext | NO | | NULL | |
+---------+------------------+------+-----+---------+-------+
Iхотите объединить таблицы таким образом, чтобы:
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'
Я все сделал до сих пор, но третье условие - проблема.Если в таблице custom нет записи для key = 'votes'
, запрос возвращает только эти записи с записями.Я хочу вернуть NULL
, если пропущены записи.
Мне нужно key = 'votes'
, потому что у меня есть другие записи для этого page_id, где ключ не «голос», и это дублирует строки из страниц