MySQL多表连接ID

时间:2011-02-12 02:50:33

标签: sql mysql

嘿那里,我需要一些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个表连接起来,此结果集是否可行。如果是,请解释,如果没有,请尽可能提出替代解决方案。

谢谢。

1 个答案:

答案 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