2015-06-13 2 views
0

У меня есть 5 таблиц. Я хочу выбрать данные, но иногда пятая таблица (с именем comment) будет пуста. Когда это произойдет, я хочу, чтобы мой запрос возвращал значение null для значений из этой таблицы и возвращал только другие значения (в пятой таблице содержатся комментарии пользователей, иногда их нет).mysql SELECT столбец, только если существует

Вот мой запрос:

SELECT articles.title, articles.posted, articles.body, authors.name, authors.img, authors.bio, comment.user_id, comment.text, comment.article_id, GROUP_CONCAT(categories.cat_name) AS cat_name 
FROM articles, authors, categories, article_categories, comment 
WHERE articles.author_id = authors.id 
AND articles.id = article_categories.article_id 
AND article_categories.category_id = categories.id 
AND articles.id = comment.article_id 
AND title LIKE :title; 

:title происходит от PDO и здесь не имеет значения.

Проблема возникает из AND articles.id = comment.article_id. Я не знаю, как написать это, чтобы проверить только это, если оно есть и игнорировать это в противном случае.

Спасибо за помощь

+1

Использование соединений (в частности, 'ЛЕВЫЙ JOIN') – h2ooooooo

ответ

1

Вы должны использовать proper join syntax, и в этом случае вместо INNER JOINLEFT JOIN использования для комментария таблицы:

SELECT articles.title, articles.posted, articles.body, authors.name, authors.img, authors.bio, comment.user_id, comment.text, comment.article_id, GROUP_CONCAT(categories.cat_name) AS cat_name 
FROM articles INNER JOIN authors ON articles.author_id = authors.id 
INNER JOIN article_categories ON articles.id = article_categories.article_id 
INNER JOIN categories ON article_categories.category_id = categories.id 
LEFT JOIN comment ON articles.id = comment.article_id 
WHERE title LIKE :title; 
Смежные вопросы