2013-04-16 5 views
0

У меня 2 таблицы 1 для веб-страниц подробно , а другой для посещения , как показано нижеSQL соотношение показать сумма (значения) для каждой записи Ther таблицы

PAGES

pid pname  and-more-columns 
1 index  ----------- 
2 contact ----------- 
3 about  ----------- 

ВИЗИТЫ

vid pid ip   datetime 
1  1 222.1.1.1  2013-01-01 11:11:11 
2  1 12.12.2.1  2013-01-01 11:21:11 
3  3 222.1.1.1  2013-01-02 10:11:11 
4  2 12.12.2.1  2013-02-01 11:21:11 
5  3 222.1.1.1  2013-03-01 11:14:11 
6  1 12.12.2.1  2013-04-01 11:55:11 

я хочу показать, как показано ниже

pid pname  and-more-columns total_visits (shud count from VISITS table) 
1 index  -----------   3 
2 contact -----------   1 
3 about  -----------   2 
+0

Что вы уже пробовали? –

ответ

0

Предполагая, что вы хотите «0», где нет соответствия, то вы хотите, левое внешнее соединение:

SELECT p.*, COUNT(v.pid) 
FROM PAGES p left outer join 
    VISITS v 
    ON p.pid = v.pid 
GROUP BY p.pid 

Обратите внимание, что это группировка только одна поле в предложении group by. Это использует функцию MySQL (mis), называемую «скрытые столбцы». Эта версия также предполагает, что поле pages.pid уникально.

+0

спасибо Гордон Линофф! –

0
SELECT p.*, COUNT(v.pid) 
FROM PAGES p 
INNER JOIN VISITS v 
ON p.pid = v.pid 
GROUP BY p.pid, p.pname, <list all other columns here> 
0
SELECT 
    v.*, 
    count(p.pid) AS `TotalVisits` 
FROM PAGES AS p 
INNER JOIN VISITS AS v ON v.pid = p.pid 
GROUP BY p.pid