根据属性值从适当的表中获取数据

时间:2013-07-04 15:33:05

标签: mysql

我有以下表格

id  element_id   element_type
1      1           text
2      1           image
3      1           video

文本

id   message  
 1    asdfa sdf 

图像

 id  path  
 1    asfda/asfd/asdf

视频

 id    link
 1     asdf/asdfasdf

我想根据element_type获取数据。 例如,如果element_type是text,那么它应该从text表中获取数据。 如何为此编写查询。

如果element_type是文本,则它不应该看到图像和视频表。它应该只从文本和post表中获取数据。

1 个答案:

答案 0 :(得分:2)

即使left join

,也可使用null获取所有数据
select p.*, t.*, i.*, v.*
from post p
left join text t on t.id = p.element_id and p.element_type = 'text'
left join image i on i.id = p.element_id and p.element_type = 'image'
left join video v on v.id = p.element_id and p.element_type = 'video'