2010-02-21 3 views
1

После того, я использовал этот запрос, чтобы выбрать количество элементов, чтобы создать список страниц:Выберите количество строк, а содержание в нем

SELECT COUNT(id) FROM lists WHERE online = 1 

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

Я попытался следующие, но он дает несколько строк вместо одного номера:

SELECT COUNT(lists.id) 
FROM lists 
INNER JOIN subtitles ON subtitles.list_id = lists.id 
INNER JOIN listitems ON listitems.subtitle_id = subtitles.id 
WHERE lists.online = 1 
GROUP BY lists.id 

Конечно, я знаю, что это можно рассчитать количество списков с PHP, но это было бы гораздо быстрее выберите количество списков только с MySQL.

Итак, есть ли способ выбрать количество строк без получения фактического содержимого из них?

ответ

3

Это, вероятно, что вы хотели достичь:

SELECT COUNT(DISTINCT(lists.id)) 
FROM lists 
INNER JOIN subtitles ON subtitles.list_id = lists.id 
INNER JOIN listitems ON listitems.subtitle_id = subtitles.id 
WHERE lists.online = 1 

Вместо того, чтобы группировать списки, вы можете просто взять отсчет отчетливый внутри объединения. Если счет все, что вы хотите получить в любом случае, это еще проще.

+0

Спасибо, что именно:]. Я попробовал 'DISTINCT COUNT (lists.id)', но я не знал, что можно использовать его внутри 'COUNT()' – Harmen

Смежные вопросы