0

検索しましたが、検索語句が正しく表現されていない可能性があります。次の単純なクエリを使用して、設計の助けを借りることができます。

ゲームをリストする親テーブルがあります

GAMENUM     HOMEID     AWAYID
1             25         29
2             12         17
3             13         12

チームテーブル

TEAMID    TEAMNAME
12        Blue 
13        Yellow
17        Red
25        Pink
29        White

私が必要とするのは、次のようなリストを取得するためのクエリです

GAMENUM    HOMEID    AWAYID   HOMETEAM     AWAYTEAM
1          25        29       Pink         White
2          12        17       Blue         Red
3          13        12       Blue

ID に関連付けられたチーム コードがない場合でも、ゲーム レコードが返されることを望みますが、見つからない場合は HOMETEAM または AWAYTEAM の名前が NULL になります。

4

1 に答える 1

1

これを試して:

SELECT DISTINCT p.GAMENUM, p.HOMEID, p.AWAYID, t1.TEAMNAME [HOMETEAM], t2.TEAMNAME [AWAYTEAM]
FROM [Parent] p
LEFT JOIN Team t1 ON t1.TEAMID = p.HOMEID
LEFT JOIN Team t2 ON t2.TEAMID = p.AWAYID

テストケース:

WITH [Parent] AS (SELECT * FROM (
    SELECT 1 [GAMENUM], 25 [HOMEID], 29 [AWAYID] UNION ALL
    SELECT 2, 12, 17 UNION ALL
    SELECT 3, 13, 12) as [Parent]),

[Team] AS (
    SELECT * FROM (
    SELECT 12 [TEAMID], 'Blue' [TEAMNAME] UNION ALL
    SELECT 13, 'Yellow' UNION ALL
    SELECT 17, 'Red' UNION ALL
    SELECT 25, 'Pink' UNION ALL
    SELECT 29, 'White') as [Team])

SELECT p.GAMENUM, p.HOMEID, p.AWAYID, t1.TEAMNAME [HOMETEAM], t2.TEAMNAME [AWAYTEAM]
FROM [Parent] p
LEFT JOIN Team t1 ON t1.TEAMID = p.HOMEID
LEFT JOIN Team t2 ON t2.TEAMID = p.AWAYID

テスト ケースの結果については、SQL Fiddleを確認してください

于 2013-03-13T20:21:46.580 に答える