繁体   English   中英

如何根据特定条件联接两个表?

[英]How to JOIN two tables based on certain conditions being met?

我有两个桌子, 样品

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还没有投票给一个样本

例子1

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

2
3

由于samples.status where samples.sample_id = 1尚未pending ,所以samples.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'

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

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
        )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM