我有一个表:
投票
record_id user_id type
1 1 0
2 1 1
3 1 0
问题//类型-0
id title
1 Title1
2 Title2
3 Title3
答案//类型1
id question_id
2 2
我需要请求得到这个输出数据
record_id user_id type title
1 1 0 Title1
2 1 1 Title2
3 1 0 Title3
我认为这将是条件左联接(如果type=0,则左联接带有问题表;如果type=1,则左连接带有答案表)。我该怎么做?
如果我正确理解你的逻辑,这应该会给出你想要的结果:
SELECT
v.record_id,
v.user_id,
v.type,
COALESCE(q1.title, q2.title) as title
FROM
votes v LEFT JOIN question q1
ON v.type=0 AND v.record_id=q1.id
LEFT JOIN answer a
ON v.type=1 AND v.record_id=a.id
LEFT JOIN question q2
ON a.question_id=q2.question_id
SELECTvotes.record_id、votes.user_id、votes.type、question.title来自投票LEFT在投票中加入问题。type=0 AND question.id=votes.record_idLEFT在投票上加入答案。type=1 AND answer.id=votes.record_id