2008-12-19 61 views
0

我有一个MySQL数据库MySQL的内部连接问题

urltracker的列ID和urlclicked 与列ID,url_id和urlreferrer

urlreferrer两个表urltracker其实只是与url_id查找表urlreferrer表中的列是表之间的链接。

例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表总数的网址来自urlreferrer表的这个特定网址的推荐人。

我已经搞砸了2个小时,我没有得到任何地方,即时没有数据库专家任何人都可以请解释如何实现这一点。

在此先感谢

+0

urlTracker表中的id是什么? urlId? urlReferrer表中的id是什么?推荐人的ID? – 2008-12-19 16:51:43

+0

我添加了一些SQL数据定义语言来更清楚地说明你的表格。 – 2008-12-28 20:36:53

回答

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 Where

1

我认为:

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

应该这样做。