MySQL内连接问题

时间:2008-12-19 16:48:01

标签: mysql

我在MySQL数据库中有两个表

urltracker列id和urlclicked 和urlreferrer,列id,url_id和urlreferrer

urltracker实际上只是一个查找表,其中urlreferrer表中的url_id列是表之间的链接。

示例DDL:

CREATE TABLE urltracker (
  id           SERIAL PRIMARY KEY,
  urlclicked   VARCHAR(200) NOT NULL
);

CREATE TABLE urlreferrer (
  id           SERIAL PRIMARY KEY,
  url_id       BIGINT UNSIGNED NOT NULL,
  urlreferrer  VARCHAR(200) NOT NULL
  FOREIGN KEY(url_id) REFERENCES urltracker(id)
);

我要做的就是加入这两个表,这样我就可以通过查找urlclicked表获取点击的url以及urlreferrer表中针对此特定url的引用者总数。

我已经搞砸了2个小时而且我没有到达任何地方,我没有数据库专家可以请任何人解释如何实现这一目标。

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您想要所有网址,

 Select urlClicked, Count(*)
   From urlReferrer R 
       Join urlTracker U
           On U.id = R.urlId
   Group By urlClicked

如果您只想要指定的初始点击,

 Select urlClicked, Count(othRef.id)
 From urlReferrer R 
       Join (urlTracker U Join urlReferrer othRef
                  On othRef.urlId = U.urlId)
           On U.id = R.urlId
 Where R.id = [Specified Referrer's Id]
 Group By urlClicked 

- 编辑以更正Where子句的顺序

答案 1 :(得分:1)

我想:

SELECT ut.urlclicked, COUNT(ur.id) 
FROM urltracker ut JOIN urlreferrer ur ON (ut.id = ur.url_id) 
GROUP BY ut.urlclicked

应该这样做。