3

わかりました。SQLは半効率的ですが、左結合でORステートメントを使用してみましたが、機能しませんでした。

これを行う理由は、2つのテーブルから2つの列があり、1つがNULLを返した場合に結合するために使用しようとしているためです。イベントとシーズンの2つのテーブルがあります。各テーブルには、スポンサーテーブルを結合するために使用するスポンサーID列があります。この背後にある理由は、シーズン全体またはその逆ではなく、単一のイベントが後援されることがあるためです。

私の質問は、これを行うための最良の方法は何ですか。私の元のクエリはこれと同じではありませんが、同じ概念です(ただし、すべてのテーブルからすべての列を取得するわけではありません)。

SELECT sp.*, re.*, ev.*, se.* 
FROM events ev 
INNER JOIN seasons se ON se.season_id=ev.event_sid 
INNER JOIN results re ON ev.event_id=re.results_eid 
LEFT JOIN sponsors sp ON ev.event_sponsor=sp.sponsor_id

そして最後に私は取り組むことを試みましたOR se.season_sponsor=sp.sponsor_id

最終的に、私はev.event_sponsorまたはse.season_sponsorのいずれかでスポンサーテーブルに参加しようとしています。どんな助けでも大歓迎です。私は少し調べてみましたが、達成しようとしていたことに対する答えを見つけることができませんでした。

4

1 に答える 1

1

試す:

SELECT sp.*, re.*, ev.*, se.* 
FROM events ev 
INNER JOIN seasons se ON se.season_id=ev.event_sid 
INNER JOIN results re ON ev.event_id=re.results_eid 
LEFT JOIN sponsors sp ON COALESCE(ev.event_sponsor,se.season_sponsor)=sp.sponsor_id
于 2013-02-14T15:34:05.167 に答える