2008-12-19 98 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 

應該這樣做。