0

私は2つのテーブル、サンプルを持っています

sample_id   status  member_id
1           pass    2
2           pending 2
3           pending 2
4           pending 1

投票

vote_id sample_id   member_id
1           1           1
2           1           1
3           1           5
4           2           2

samples.sample_idとはどちらvotes.vote_idも自動インクリメントでありsamples.member_id、 とvotes.member_idを結合する必要がありますwhere samples.member_id=someUserId

samples.sample_id の結果セットを返したい

  1. samples.status は保留中です
  2. samples.member_idサンプルを送信しませんでした
  3. votes.member_idサンプルに投票していません

例 1

たとえば、member_idが 1 の場合、結果セットは次のようになります。

2
3

samples.status where samples.sample_id = 1ではないのでpendingsamples.member_id提出したsamples.sample_id4.

例 2

が 2の場合member_id、結果セットは

4

以来1-3samples.member_idを提出しています。samples.sample_id

例 3

が 3の場合member_id、結果セットは

2
3
4

samples.status where samples.sample_id = 1ではないのでpending

編集 満たす必要がある3つの条件のうち、最初の条件は次のように満たすことができます

SELECT * FROM samples
LEFT OUTER JOIN votes on samples.sample_id = votes.vote_id
WHERE samples.status='pending'

しかし、私は他の2つの条件を満たすのに苦労しています

4

1 に答える 1

1
SELECT  sample_id
FROM    samples
WHERE   status = 'pending'
        AND member_id <> $someUserId
        AND sample_id NOT IN
        (
        SELECT  sample_id
        FROM    votes
        WHERE   member_id = $someUserId
        )
于 2012-04-26T16:54:05.547 に答える