[英]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_id
和votes.vote_id
被自动增量和samples.member_id
和votes.member_id
应被接合where samples.member_id=someUserId
。
我想返回一个samples.sample_id的结果集,其中
samples.member_id
没有提交样品 votes.member_id
还没有投票给一个样本 例如,如果member_id
为1,则结果集应为
2
3
由于samples.status where samples.sample_id = 1
尚未pending
,所以samples.member_id
提交了samples.sample_id
4。
如果member_id
为2,则结果集应为
4
由于samples.member_id
已提交了samples.sample_id
1-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.