Выберите количество строк вместо содержимого в нем - PullRequest
1 голос
/ 21 февраля 2010

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

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.

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

1 Ответ

3 голосов
/ 21 февраля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...