2

これを約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行で説明しています。

ここで何か助けていただければ幸いです。
ありがとう!

4

2 に答える 2

2
select * from people where score<24 and 
name in (select name from runs where add!=s) and
name not in (select name from runs where add=s)
于 2015-02-17T10:03:11.097 に答える