2010-04-17 49 views
1

我正在嘗試制定一個查詢,該查詢使用事件編號自動連接到一個表上。我從來沒有做過自我加入。SQL自加入查詢幫助

我想要查詢的是當一個客戶已經開始在切斯特的城市,看看他們搬到了什麼城市。但我不想看到他們是否在另一個城市開始。我也希望只看到一次行動(所以我只想看看他們是否從切斯特到倫敦,而不是從倫敦到倫敦切斯特到倫敦)

如果他們搬到另一個城市,StartTimeDate是相同的EndDateTime 。

數據,如果他們在切斯特市開始瞭如下例子: -

 

clientid  EventNumber  City    StartDateTime     EndDateTime 
1     1   Chester   10/03/2009    11/04/2010 13:00 
1     1   Liverpool  11/04/2010 13:00   30/06/2010 16:00 
1     1   Wales   30/07/2010 16:00 
 

的結果,我想看到的是在第2行 - 因此它只能說明我的利物浦。

任何人都可以指出正確的方向嗎?

回答

3

您可以使用別名,它允許您使用同一個表的兩個實例(與你的表的名稱替換MyTable):

SELECT A.clientid, A.EventNumber, B.City AS CityTo, A.EndDateTime AS MoveDateTime 
    FROM MyTable A INNER JOIN MyTable B 
     ON A.clientid = B.clientid 
     AND A.EventNumber = B.EventNumber 
     AND A.EndDateTime = B.StartDateTime 
WHERE A.City = 'Chester' 
+1

這個SQL查詢是確定的,但你應該添加一個地方條件來過濾你正在尋找的城市,否則它將返回人們從任何城市移動的所有行。 那條件應該與表A – Claudia 2010-04-17 14:45:40

+0

@Claudia:當然,感謝評論。 WHERE子句添加。 – Heinzi 2010-04-17 16:37:39

+0

非常感謝:) – user319160 2010-04-18 14:01:45