これを約2時間取得しようとしましたが、成功しませんでした。これが私がする必要があることの例です:
テーブル
people
:
nameA score
---------------------
someone1 24
someone2 24
someone3 24
someone4 23
someone5 21
someone6 24
someone7 19
someone8 20
someone9 24
someone10 24
runs
:
nameB add
---------------------
someone1 s
someone2
someone2
someone4 s
someone5
someone4
someone7 s
someone8 s
someone7
someone7 s
これは、私の問題を視覚的に示すための例にすぎないことに注意してください。私のテーブルの設定について話す必要はありません。
知りたいこと:まず、スコアが 24 より小さい
テーブルのすべてのエントリが必要です(ここまでは簡単です)。people
次のステップは、 people.name がs
テーブルにない結果のみを表示することですruns
(私の実際の問題)。
出力は次のようになります。
name score
---------------------
someone2 22 /* no "s"-entry in runs */
someone5 21 /* also no entries */
残念ながら、私は結合にあまり慣れていません。これが私の最後の試みです:
SELECT nameA,score FROM runs,people WHERE people.nameA = runs.nameB
AND people.score < 24
AND runs.add != "s"
GROUP BY people.nameA
擬似コード:
foreach Person in (SELECT nameA as Person,score FROM people WHERE score < 24)
SHOW name.B = Person WHERE add != "s"
私はこれがたわごとであることを知っています:)。しかし、それは私が必要なものを2行で説明しています。
ここで何か助けていただければ幸いです。
ありがとう!