0

これを行う方法がわかりません。238871メンバーのジョブテーブルと7713エントリのトレードテーブルと231142エントリの3つのテーブルメンバーテーブルがあります

238871のメンバーからトレードテーブルにあるものを差し引いた場合、7729の差が得られます。ジョブテーブルには7713のエントリがあるため、メンバーテーブルには16の未計上があります。貿易はすべて仕事と会員のテーブルで行われます。しかし、メンバーには、仕事や貿易に従事していない16人がいます。

これらの16人のメンバーをどのように定義できますか?ありがとう

4

1 に答える 1

2

実際、 aleft joinはのすべてを提供しますjobsortedusers。次に、その中のすべてmembersも にありjobsortedusersます。

左外部結合の順序を逆にして、代わりにこれを実行したいようです:

select * 
  from membership.members as mm
  left outer join jobsorted.jobsortedusers as js
    on mm.memberid = js.memberid

これにより、すべてが に取得されmembers、その中のすべてjobsortedusersも に含まれmembersます。すべてのユーザーがメンバーでもあると言うように、このクエリはすべてを返します。

これを読むことを強くお勧めします。これは結合について非常によく説明しています


新しい質問に答えるには、jobsortedusersIDがnullのすべてが必要です。つまり、

select mm.* -- every other column will be null
  from membership.members as mm
  left outer join jobsorted.jobsortedusers as js
    on mm.memberid = js.memberid
 where js.memberid is null

何に参加すればよいかわかりませんtradeが、このテーブルにもユーザー テーブルにもないものをすべて取得するには、次のようなものが必要です。

select mm.* -- every other column will be null 
  from membership.members as mm
  left outer join jobsorted.jobsortedusers as js
    on mm.memberid = js.memberid
  left outer join trade t
    on mm.memberid = t.memberid
 where js.memberid is null
   and t.memberid is null
于 2012-08-27T09:43:12.800 に答える