Всем доброе время суток, есть несколько таблиц
Content
id |title|Author_Id |
---|-----|----------|
1 | asd | 2 |
---|-----|----------|
Author_Content
Author_Id |Content_id |
----------|-----------|
2 | 1 |
----------|-----------|
Author
Id |Name |
-----|-----|
2 |Павел|
Столбцы не имеющие отношения к вопросу были опущены, для экономии места.
Собственно вроде бы все понятно, Content - таблица с каким-то контентом; Author_Content - таблица соотношений id контена -> id автора; Author - id Автора -> его имя.
Я дергаю данные вот таким запросом:
SELECT
t2.id as `txt_id`,
UNIX_TIMESTAMP( t2.show_time ) as `date_end_time`,
1 as index_id,
`type_id`,
`content_type_id`,
`title`,
`annonce`,
`content`,
t2.title as title,
t1.Author_Id as Author_Id,
t3.Name as AuthorName
FROM
`Content` as t2
JOIN `Author_Content` as t1 ON
t2.id = t1.Content_id
JOIN `Author` as t3 ON
t1.Author_Id = t3.Id
WHERE
t2.status = 1
AND t2.content_type_id != 14;
Запрос отрабатывает хорошо, возвращает все что нужно, кроме ситуации, когда нет в какой то таблице данных, увы сайт который достался по наследству, подразумевает что в Author_Content может и не быть соотношение id контена -> id автора, тогда запрос возвращает пустой результат.
Если точнее то не выполняется вот это условие в запросе:
t2.id = t1.Content_id
Собственно сам вопрос: помогите составить запрос так что бы в случае отсутствия записи в Author_Content возвращалось какое то дефолтное значение, например -1; я так понимаю там должно быть что то вроде If но не знаю если честно как его подружить с JOIN
Спасибо пользователю Akina за ответы, но сделал немного по своему, все-таки решил через IFNULL
SELECT
t2.id as `txt_id`,
UNIX_TIMESTAMP( t2.show_time ) as `date_end_time`,
1 as index_id,
`type_id`,
`content_type_id`,
`title`,
`annonce`,
`content`,
t2.title as title,
IFNULL(t1.Author_Id,-1) as Author_Id,
IFNULL(t3.Name,'N/A') as AuthorName
FROM
`Content` as t2
LEFT JOIN `Author_Content` as t1 ON
t2.id = t1.Content_id
LEFT JOIN `Author` as t3 ON
t1.Author_Id = t3.Id
WHERE
t2.status = 1
AND t2.content_type_id != 14;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите пожалуйста как удалить из таблицы на 1,5 миллиона строк, строки где встречается в поле "category" = 'Рубрики'В поиске phpMyAdmin выдаёт 15 строк,...