私はこのロジックを使い果たしました。複数の結合テーブルのどこにあるかを選択
ロジックは
各ユーザーに単一の電子メールを送信してしまうので、リストから明確な選択する必要がありますされは、我々が取引を取引は、ユーザが複数の領域
にリンクされている複数の利害
にリンクされている複数の領域
にリンクされている1
の取引IDを持っていますユーザーは複数の関心にリンクされています
すべてのユーザーが必要です....ユーザーは取引と同じ地域にリンクされています
userRegionLinkのURL、dealRegionLink DRL
url.regionIdはdrl.dealId = 1人の
ユーザが取引
userInterestLinkのUIL、dealInterestLinkのDIL
uil.interestId同じ関心に連結さdrl.regionIdでありますdil.dealId = 1
が、これは私たちに、ユーザー
のリストを与えるだろうdil.interestIdに今我々は唯一
しかし、私はこのクエリを書くための最良の方法は何であるか分かりません。
我々はuserId
とinterestId
dealInterestLink
を持って
userInterestLink
重要ではない、それuserId
や他の列内のすべてのユーザー情報を持っている
users
を持って
ここにいくつかのテーブルを扱っていますdealId
とinterestId
dealId
と一致するすべてのユーザー情報があるので、私たちが最後に欠けている
regionId
を持ってregionId
dealRegionLink
を持って
userRegionLink
。
SELECT u.userId, uil.interestId, url.regionId FROM users u
LEFT JOIN userInterestLink uil ON (uil.userId = u.userId)
LEFT JOIN userRegionLink url ON (url.userId = u.userId)
WHERE uil.interestId IS NOT NULL AND uil.interestId IN (
SELECT DISTINCT interestId FROM dealInterestLink WHERE dealId = 1
) AND url.regionId IS NOT NULL AND url.regionId IN (
SELECT DISTINCT regionId FROM dealRegionLink WHERE dealId = 1
)
:よう
私のダミーデータを使ってテストしました。うまく働いた。 –
+1 nice( 'JOIN'は認識していませんでした) –