2014-10-31 3 views
0

У меня есть небольшая проблема с запросом, который я сделал, он не получает все результаты, которые есть. Он должен, по крайней мере, придумать 3-х рядов, но приходит только с одним:Запрос не получает все результаты

SELECT * FROM n_news WHERE article_id IN 
(SELECT DISTINCT article_id FROM nk_article_category 
WHERE category_id IN (2,10,11,12)) 
ORDER BY article_featured DESC,article_published DESC 

screenshot DB

Любой идея, что я делаю неправильно? MySQL не обнаружил ошибок. Заранее спасибо Слева - article_id и right = category_id в таблице nk_article_category. Есть один результат, но не вижу смысла показывать всю таблицу

+1

18,20 являются два различных Идентификаторы статьи – radar

+0

вы можете отправить строки данных, вы ожидали увидеть? Таким образом, мы можем сравнить его с вашим запросом. И структура двух таблиц. Кроме того, запустите подзапрос самостоятельно и посмотрите, какие результаты он придумал. Просто заметил, что вы разместили изображение, но я никогда не смогу их увидеть по какой-то причине - не уверен, что он показывает. –

+0

Не уверен, как отобразить это аккуратно, но подзапрос возвращает правильные строки. –

ответ

0

То, что я вижу за ваш размещенный образ данных запроса, ваш запрос возвращает правильный результат. строки все разные (это будет считаться дублирующимся, если как article_id, так и category_id одинаковы в нескольких строках).

Кстати, вы можете изменить свой запрос отправил к INNER JOIN вместо того, чтобы использовать вспомогательный запрос как

SELECT t1.* 
FROM n_news t1 
INNER JOIN nk_article_category t2 
ON t1.article_id = t2.article_id 
AND t2.category_id IN (2,10,11,12) 
ORDER BY t1.article_featured DESC, t1.article_published DESC; 
Смежные вопросы