Чтобы получить подробную статью и количество комментариев вы можете использовать следующие
SELECT
articles.*,
COALESCE(COUNT(comments.comment_id),0) AS numberOfCommments
FROM articles
LEFT JOIN comments
ON comments.comment_article_id = articles.article_id
AND comments.comment_type = 'B'
// If selecting a specific article use this line
WHERE articles.article_id = [[ARTICLE_ID]]
// If selecting all articles with counts use this line
GROUP BY articles.article_id
Вы не можете получить информацию о комментариях в том же запросе, что и таблица статей, из-за того, что у двух, скорее всего, будут разные поля. Если вы действительно хотели бы получить статью, за которой последуют все комментарии, тогда будет работать что-то вроде следующего. Следуя ниже, убедитесь, что столбцы в первом запросе совпадают с столбцами во втором (т. Е. Столбец заголовка из статьи соответствует либо пустой строке (показано), либо столбцу заголовка из комментариев). Я бы лично не сделал этого, и вместо этого просто выполнил бы 2 запроса, один, чтобы получить детали статьи, и один, чтобы получить какие-либо комментарии таким образом, что не имеет значения, что типы столбцов могут не совпадать, а это также означает статьи запрос не нужно присоединиться на комментарии, как вы можете просто посчитать количество строк, которые в запросе комментариев
одного запроса метод союза, не советовали
(
SELECT
'article' AS rowType,
article_date_posted,
article_title,
article_content
FROM articles
WHERE article_id = [[ARTICLE_ID]]
)
UNION
(
SELECT
'comment' AS rowType,
comment_date_posted,
'', // Empty string because comments usually have no title
comment_content
FROM comments
WHERE comment_article_id = [[ARTICLE_ID]]
AND comment_type = 'B'
ORDER BY comment_date_posted ASC
)
метод 2-запрос, проще и в большинстве случаев более эффективным
//articles query
SELECT *
FROM articles
WHERE article_id = [[ARTICLE_ID]];
//comments query
SELECT *
FROM comments
WHERE comment_article_id = [[ARTICLE_ID]]
AND comment_type = 'B';
Спасибо всем за ваше время, я очень ценю ..Симон, последний вопрос, проблема в том, что у меня alos есть comment_types, потому что таблица комментариев является общей, что означает, что я могу использовать таблицу комментариев для pics, videos, articles и т. Д., Теперь мне нужно только получить в случае ARTICLES, где comment_type = 'B' и в этом случае он не работает, и даже если он работает, он отображает только те статьи, у которых есть комментарии, если есть 0 комментариев, статья не показана, я попробовал суб-запрос, но это, похоже, не работает, поскольку я недостаточно хорош в том числе. Ваш вход будет оценен очень высоко ... – Max
Я добавил несколько комментариев, которые должны делать по вашему запросу. В первом случае, если комментариев нет, будет показано количество комментариев = 0. Во втором и третьем он выберет статью, а затем любые комментарии, имеющие тип = 'B'. В каждом случае вам просто нужно указать ограничение comment_type = 'B' либо на критерии WHERE (при выборе из комментариев), либо на критерии JOIN ON ..., когда вы хотите подсчитать строки с определенным типом комментариев –
как шарм :) спасибо, я учусь ... большое спасибо .. – Max