6

よろしくお願いいたします。

[People]テーブルには 2 つの列があります。

  • 個人ID
  • 個人名

[Marriages]テーブルには 3 つの列があります。

  • 結婚ID
  • 個人IDa
  • 個人IDb

次の列を選択したい:

  • 結婚ID
  • PersonName (personIDa 用)
  • PersonName (personIDb 用)

SELECTでステートメントを使用する必要があると思いますがJOIN、それぞれに一意のエイリアスを割り当てる方法がわかりませんPersonName。これは私がこれまでに持っているものです(うまくいきません):

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]  

再度、感謝します...

4

5 に答える 5

8

これはあなたが達成しようとしていることと一致していますか?

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]  
于 2013-01-05T02:18:59.073 に答える
2

私はあなたがこれをやろうとしていると思います...

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];
于 2013-01-05T02:18:06.433 に答える
1

次のようなものが必要になります。

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 
于 2013-01-05T02:19:03.893 に答える
1

必要な結合の種類を忘れないでください...「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 
于 2013-01-05T04:20:55.363 に答える
-1

みんな、ありがとう; あなたの提案は完璧に機能しました。JOIN ステートメントで繰り返しテーブルのエイリアスを作成しようとしていたはずのときに、SELECT ステートメントで繰り返し列のエイリアスを作成しようとしていました。

これに遭遇した他の人のために:

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]  

エイリアス名は JOIN ステートメントで作成され、SELECT ステートメントで使用される場所に適用されます。その逆ではありません。

于 2013-01-05T16:32:46.247 に答える