2010-04-17 5 views
1

Я пытаюсь выполнить запрос, который сам присоединяется к таблице, используя номер события. Раньше я никогда не делал себя.SQL Self Join Query Help

То, что я пытаюсь запросить, - это когда клиент отправился в город, который является честером, чтобы посмотреть, в какой город они переехали. Но я не хочу видеть, начали ли они в другом городе. Мне также хотелось бы только увидеть ход один раз (так что мне хотелось бы только посмотреть, отправились ли они из Честера в Лондон, а затем перебрали в лондон на уэльс)

StartTimeDate - это тот же EndDateTime, если они переехали в другой город ,

пример

данных следующим образом, если они начались в городе Chester: -

 

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 запрос в порядке, но вы должны добавить Where чтобы фильтровать город, который вы ищете, иначе он вернет все строки, в которых люди перемещаются из любого города. Что должно быть с таблицей A – Claudia

+0

@Claudia: Конечно, спасибо за комментарий. Предложение WHERE. – Heinzi

+0

Огромное спасибо :) – user319160