我有三张桌子。
第一桌! activity
包含以下字段:id_company
,id_act
,type
[blog
或poll
]
第二桌! blog
包含以下字段:id
,“正文
and third table!
投票with these fields: 'id
,'文字,
回答`
现在,我希望通过加入activity
从activity
表中获取我的信息,blog
和poll
表取决于type
字段。
activity table
-----------------------------
id_company| id_act| type
-----------------------------
1 | 1 | blog
1 | 2 | blog
2 | 3 | blog
1 | 1 | poll
2 | 4 | blog
2 | 2 | poll
3 | 5 | blog
blog table
-------------------
id | body
-------------------
1 | aaaa
2 | bbbb
3 | cccc
4 | dddd
5 | eeee
poll table
-----------------------------
id | text | answer
-----------------------------
1 | zzz | z
2 | xxx | x
3 | yyy | y
id_company IN (1, 2)
的最终输出必须如下:
-------------------------------------------------------
id_company| id_act| type| body| text| answer
-------------------------------------------------------
1 | 1 | blog| aaaa| NULL| NULL
1 | 2 | blog| bbbb| NULL| NULL
2 | 3 | blog| cccc| NULL| NULL
1 | 1 | poll| NULL| zzz | z
2 | 4 | blog| dddd| NULL| NULL
2 | 2 | poll| NULL| xxx | x
请帮我写这个查询。
感谢。
答案 0 :(得分:2)
根据活动表
中的类型列,使用左连接和其他连接条件select
a.id_company,
a.id_act,
a.type,
b.body,
p.text,
p.answer
from activity a
left join blog b on(a.id_act = b.id and a.`type` = 'blog')
left join poll p on(a.id_act = p.id and a.`type` = 'poll')
where a.id_company IN (1, 2)
答案 1 :(得分:1)
抱歉,我没有可以试用的数据库,但这应该有效: -
SELECT * FROM
(
SELECT
activity.id_company
, activity.id_act
, activity.type
, blog.body
, poll.text
, poll.answers
FROM
activity
LEFT JOIN blog ON activity.id_act = blog.id
LEFT JOIN poll ON activity.id_act = poll.id
)
WHERE id_company IN (1, 2)