基于值连接多个表

时间:2016-08-18 20:25:33

标签: php mysql

我有一个PHP / MYSQL网站,通过它我发布了两种类型的内容:

  1. 新闻帖(我的内容)
  2. 访客提交(诗歌,艺术品等)
  3. 这些内容类型中的每一个都有自己的独立表,每个表都有一个存储帖子/提交标题的列。我用第三个表来存储新闻帖子和提交的评论。我将评论表设置为有一个名为 content_category 的列,该列会添加“post”“submission”的值来跟踪它所属的内容类型。还有另一列存储新闻帖子/访问者提交的主键/ id值,名为 content_id

    这个想法是,当从数据库中提取评论时,我还希望显示帖子或提交的标题。我想要实现的逻辑基本上是这样的:如果记录的content_category列值为“post”,则在post_ID上加入POSTS表,但如果content_category列的值为“submission”,则在submission_id上加入SUBMISSIONS表。

    这是我目前的代码,但它不起作用:(

    SELECT * FROM comments 
    LEFT JOIN posts AS details ON comments.content_id = details.post_id
    WHERE comments.content_category = 'post'
    
    UNION
    
    SELECT * FROM comments 
    LEFT JOIN submissions AS details ON comments.content_id = details.submission_id
    WHERE comments.content_category = 'submission'
    

    非常感谢您的帮助:(

1 个答案:

答案 0 :(得分:0)

UNION需要具有完全相同数量的字段

SELECT comments.*, details.some_other_field_from_posts  FROM comments  LEFT JOIN posts AS details ON comments.content_id = details.post_id WHERE comments.content_category
= 'post'

UNION

SELECT comments.*, details.some_other_field_from_submissions FROM comments  LEFT JOIN submissions AS details ON comments.content_id = details.submission_id WHERE comments.content_category = 'submission'

希望有所帮助

相关问题