2017-12-31 30 views
-1

まず、問題の原因を突き止めるためにテーブルを単純化しました。私は2つのテーブルを持っています。最初は「クラブ」と2番目の「什器」同じ変数を1つのSELECTステートメントで2回JOIN

クラブデータベースはclub_IDとclub_Nameを持っています フィクスチャはFixt_DateとホームチームとアウェーチームのID番号を持っています。

両方のクラブの日付と名前を表示するクエリを表示するにはどうすればよいですか?

SELECT Fixtures.Match_Date AS Date, Clubs.Club_Name AS Home, Clubs.Club_Name AS AWAY 
FROM Fixtures INNER JOIN Clubs ON Fixtures.Away = Clubs.ID AND Fixtures.Home = Clubs.ID; 

私はこれがひどく間違っていると感じていますが、私はまだSQLを全く経験していません。

+0

質問を更新適切なデータサンプルと予想される結果を追加 – scaisEdge

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-toを参照してください。 -me-to-be-a-very-simple-sql-query – Strawberry

答えて

0

この試してみてくださいあなたのクエリがAwayHomeの両方が同じクラブにId

+0

私はあなたが質問を理解できないと思います。 OPは、自宅のクラブ名と離れたクラブのクラブ名をIDの代わりに表示しようとしています。 –

+0

@FabianBigler - うん..完全に誤解されている質問...今はほとんど意味がないと思っています。 –

0

が含まれている場合にのみ動作します

SELECT F.Match_Date AS Date, 
     Max(case when C.ID = F.Home then C.Club_Name end) AS Home, 
     Max(case when C.ID = F.Away then C.Club_Name end) AS AWAY 
    FROM Fixtures F 
    INNER JOIN Clubs C ON C.ID in (F.Away, F.Home); 
    Group by F.Match_Date 

.. IN演算子を使用してみてください:あなたが望むすべてがある場合

SELECT Fixtures.Match_Date AS Date,  
     hc.Club_Name AS Home, 
     ac.Club_Name AS AWAY  
FROM Fixtures 
INNER JOIN 
     Clubs ac 
    ON Fixtures.Away = ac.ID 
INNER JOIN 
     Clubs hc 
    ON Fixtures.Home = hc.ID; 
+0

これは正解です。エイリアスを使用して、同じテーブルを2回結合できます。 –

+0

これはうまくいくようです。私は質問を単純化しすぎたので、全体的なクエリにはまだ何らかの作業が必要ですが、これは私に長い道のりをもたらします! – DJDiaper

0

をIDの代わりにクラブの名前を取得する場合は、副選択を使用することもできます:

01日付AS

SELECT Match_Date、(ID =ホームクラブからClub_Nameを選択)ASアウェイ備品

からホーム、(ID =アウェイクラブからClub_Nameを選択)注AS:このソリューションにより、clubs_idでなければなりませんPK。

関連する問題