MySQL: нужно получить количество строк - PullRequest
3 голосов
/ 18 марта 2011

Я пытаюсь выполнить SQL-запрос, в результате которого также получается ряд подходящих строк из другой таблицы.

Вот текущий запрос, вставленный в sprintf:

ВЫБРАТЬ a. * ОТ websites КАК ГДЕ website_id =% d

Затем у меня есть запрос для получения количества уникальных посещений (из таблицы посещений).) для данного сайта:

ВЫБРАТЬ * ИЗ website_visits ГДЕ website_id =% d GROUP BY visitor_id

Теперь есть ли способ вставитьэтот запрос внутри первого, чтобы я мог получить количество уникальных посещений, как часть результата первого запроса?Это должно быть что-то вроде этого:

SELECT a. *, (SELECT * FROM website_visits AS b WHERE b. website_id = a. website_id GROUP BY visitor_id)AS unique_visits ОТ websites КАК ГДЕ website_id =% d

Но ... что касается конца выполнения, я в тупике.Мы ценим любую помощь, которую вы можете оказать!

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Это дает вам все записи вашего сайта, и для каждого из них подсчитывается, сколько уникальных visitor_id есть для этого сайта.

SELECT a.*, (
    SELECT COUNT(DISTINCT b.visitor_id)
    FROM website_visits AS b
    WHERE b.website_id = a.website_id) AS unique_visits
FROM websites AS a
WHERE website_id = %d
1 голос
/ 18 марта 2011

Чтобы получить количество строк, добавьте SQL_CALC_FOUND_ROWS к запросу, например:

SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name;

После этого запроса вы можете:

SELECT FOUND_ROWS();

Чтобы получитьсчетчик строк.

(Это позволяет получить счетчик дешевым способом; если вам нужен счетчик как часть набора строк, вам придется выполнить подзапрос, как в вашем вопросе.)

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