2013-01-05 12 views
6

Z góry dzięki za pomoc:SQL SELECT DOŁĄCZ COLUMN ALIAS

[People] stół ma dwie kolumny:

  • PersonID
  • PERSONNAME

[Marriages] Stół ma trzy kolumny:

  • MarriageID
  • PersonIDa
  • PersonIDb

Chcę wybrać następujące kolumny:

  • MarriageID
  • PERSONNAME (dla personIDa)
  • PERSONNAME (dla personIDb)

Myślę, że muszę użyć instrukcji SELECT z JOIN, ale nie jestem pewien, jak przypisać unikalny alias do każdego PersonName. To, co mam tak daleko (który nie działa):

SELECT 
    [Marriages].[MarriageID], 
    [People].[PersonName] AS aName, 
    [People].[PersonName] AS bName 
FROM 
    [Marriages] 
JOIN 
    [People] ON [Marriages].[PersonIDa] = [People].[PersonID] 
JOIN 
    [People] ON [Marriages].[PersonIDb] = [People].[PersonID] 

Dzięki jeszcze raz ...

+0

Nie będziesz potrzebować nawiasów kwadratowych wokół nazw tabel i kolumn, o ile nie użyjesz słów kluczowych SQL lub znaków innych niż zachodnie –

Odpowiedz

7

Czy to pasuje do tego, co próbujesz osiągnąć?

SELECT m.[MarriageID], peopleA.[PersonName] AS aName, peopleB.[PersonName] AS bName 
FROM [Marriages] M 
JOIN [People] peopleA ON m.[PersonIDa] = peopleA.[PersonID] 
JOIN [People] peopleB ON m.[PersonIDb] = peopleB.[PersonID] 
2

Chyba próbujesz to zrobić ...

SELECT 
m.[MarriageID], 
pa.[PersonName] AS aName, 
pb.[PersonName] AS bName 
FROM [Marriages] m 
JOIN [People] pa ON m.[PersonIDa] = pa.[PersonID] 
JOIN [People] pb ON m.[PersonIDb] = pb.[PersonID]; 
1

Trzeba będzie coś takiego:

Select MarriageID, a.PersonName, b.PersonName 
From Marriages m 
Join People a On a.PersonID = m.Person1ID 
Join People b on b.PersonID = m.Person2ID 
1

Nie zapomnij, jaki rodzaj DOŁĄCZ trzeba ... "INNER JOIN"/"LEFT OUTER JOIN"/"RIGHT OUTER JOIN"/"CROSS JOIN"

SELECT MarriageID, a.PersonName, b.PersonName 
FROM Marriages m JOIN People a ON a.PersonID = m.Person1ID 
       JOIN People b ON b.PersonID = m.Person2ID 
+0

+1, aby wspomnieć o LEFT OUTER DOŁĄCZ –

-1

Dziękuję wszystkim; Twoje sugestie działały idealnie. Próbowałem utworzyć alias dla powtarzającej się kolumny w instrukcji SELECT, kiedy powinienem był próbować stworzyć alias dla powtarzanej tabeli w instrukcji JOIN.

Dla każdego, kto działa w ten sposób:

SELECT 
[TABLE1 NAME].[TABLE1 COLUMN], 
(TABLE2 ALIAS1).[TABLE2 COLUMN], 
(TABLE2 ALIAS2).[TABLE2 COLUMN], 
FROM [TABLE1 NAME] 
JOIN [TABLE2 NAME] (TABLE2 ALIAS1) ON [TABLE1 NAME].[TABLE1 MATCHING COLUMN] = (TABLE2 ALIAS1).[TABLE2 MATCHING COLUMN] 
JOIN [TABLE2 NAME] (TABLE2 ALIAS2) ON [TABLE1 NAME].[TABLE1 MATCHING COLUMN] = (TABLE2 ALIAS2).[TABLE2 MATCHING COLUMN] 

Nazwa alias jest tworzony w rachunku dołączyć i stosowane tam, gdzie jest on stosowany w SELECT, a nie na odwrót.

+0

Czy naprawdę wierzysz, że ludzie mogą to zrozumieć? Zrobiłeś to bardziej skomplikowanym niż pierwotne zapytanie. Co powiesz na zapisanie poprawionej instrukcji SQL, zamiast mylić ludzi ze składnią, która nie jest poprawnym językiem SQL –