嘿那里,我需要一些MYSQL联接的帮助,我真的不知道如何实现,或者MySQL是否允许它。
我有一些表格设置,post_controller,post_text,post_photo,post_link。
post_controller具有所有ID,post_text,post_photo,post_link表不能有条目,除非post_controller有id条目(外键)。我去了这个方法,因为我有不同类型的帖子,我想要检索它们,无论它的类型是什么,所以我只是在主表中使用ID。
我想知道的是,如何将3个表与主表连接以形成所有帖子的大数组,让我说我想要帖子1到20 ..我可以加入每种类型每张表的帖子都是这样的。
post_contoller
id userid type time
1 2 1 00:00
2 4 1 00:00
3 5 2 00:00
4 23 2 00:00
5 8 3 00:00
post_text
id content title
1 {sometext} {sometext}
2 {sometext} {sometext}
post_photo
id content hash
3 {sometext} {somehash}
4 {sometext} {somehash}
post_link
id content desc link
5 {sometext} {sometext} {somelink}
结束所得数据集。
post_photo
id userid type time content title desc link hash
1 2 1 00:00 {sometext} {sometext}
2 4 1 00:00 {sometext} {sometext}
3 5 2 00:00 {sometext}
4 23 2 00:00 {sometext} {somehash}
5 8 3 00:00 {sometext}{somelink}
通过将相对于post_controller中的主ID的3个表连接起来,此结果集是否可行。如果是,请解释,如果没有,请尽可能提出替代解决方案。
谢谢。
答案 0 :(得分:1)
是的,有可能:
SELECT c.*,
IFNULL(IFNULL(p.content, t.content), l.content) AS content,
t.title,
l.desc,
l.link,
p.hash
FROM post_contoller c
LEFT JOIN post_text t ON t.id = c.id
LEFT JOIN post_photo p ON p.id = c.id
LEFT JOIN post_link l ON l.id = c.id