0

我有两张桌子,样品

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不是pending,并samples.member_id提交了samples.sample_id4。

示例 2

如果member_id是 2,结果集应该是

4

自从samples.member_id提交了samples.sample_id1-3。

示例 3

如果member_id是 3,结果集应该是

2
3
4

由于samples.status where samples.sample_id = 1不是pending

编辑 在必须满足的三个条件中,我可以通过以下条件满足第一个条件

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

但我正在努力满足其他两个条件

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 回答