I持って、次の表 条件は、間違った結果に
goal matches team_match
id | match_id | team_id | name match_id team_id | match_id | home_away
----------------------------- ----- ------------------------------
1 1 1 Ronaldo 1 1 1 home
2 1 2 Messi 2 1 away
3 1 2 Suarez 2 1 away
今、私はアウェイチームでプレーだけで選手を取得したいを提供します。
SELECT DISTINCT g.name
FROM goal g
INNER JOIN matches m
ON g.match_id = m.match_id
INNER JOIN team_match tm
ON tm.match_id = m.match_id
AND tm.home_away = 'away'
WHERE m.match_id = '1'
しかし、その代わりに:
Messi
Suarez
私が取得しています:
Ronaldo
Messi
Suarez
私の第二INNER JOINがようですが、縫い目完全に「私は、 "自宅" から変更しても、無視されます私は同じ結果を得るでしょう。
ようになります。あなたの質問には十分な情報がありません。 –
スキーマの問題。最初のテーブルにteam_idが必要 – swe
現在のクエリの内部ジョインは、クロスジョインのように機能しています。あなたのテーブル1とテーブル3の間に追加の一致基準が必要になります。 – Drishya1