如何根据满足的某些条件加入两个表?

时间:2012-04-26 16:36:04

标签: mysql

我有两张表,样本

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_idvotes.vote_id都是自动增量,samples.member_idvotes.member_id应加入where samples.member_id=someUserId

我想返回samples.sample_id的结果集

  1. samples.status待定
  2. samples.member_id未提交样本
  3. votes.member_id尚未投票选出样本
  4. 示例1

    例如,如果member_id为1,则结果集应为

    2
    3
    

    由于samples.status where samples.sample_id = 1不是pendingsamples.member_id已提交samples.sample_id,所以4.

    示例2

    如果member_id为2,则结果集应为

    4
    

    samples.member_id提交samples.sample_id 1-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'
    

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

1 个答案:

答案 0 :(得分: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
        )