Поэтому у меня есть запрос, где я выбираю из таблицы «сайтов», и подсчитать количество «страниц» с помощью внешнего ключаMySQL подсчитывать несколько внешних ключей
SELECT s_id, s_name, s_main_url, COUNT(p_id) AS numpages
FROM sites
INNER JOIN pages ON sites.s_id = pages.site_id
GROUP BY pages.site_id
ORDER BY s_id ASC
Я хочу добавить еще один внешний ключ рассчитывать, возможно, больше, чем один, так что я попробовал ниже
SELECT s_id, s_name, s_main_url, COUNT(p_id) AS numpages, COUNT(l_id) AS numlinks
FROM sites
INNER JOIN pages ON sites.s_id = pages.site_id
INNER JOIN links ON sites.s_id = links.site_id
GROUP BY pages.site_id, links.site_id
ORDER BY s_id ASC
отсчет для обоих NUMPAGES и numlinks одни и те же, и они, кажется, умножаются все результаты таблицы и дает мне огромное количество, которое неверно
Любые идеи?
Thx для ответа :) Разве это не будет менее эффективным на больших таблицах? – Horse
Нет, внутренне версия JOIN и версия подзапроса работают точно так же. Вы можете переписать первый запрос в версию подзапроса и сравнить их с командой EXPLAIN. http://dev.mysql.com/doc/refman/5.5/en/using-explain.html – vartec
Замечательно, спасибо за помощь :) – Horse