2016-08-18 82 views
-1

我有一个PHP/MySQL的网站,通过它我发布两种类型的内容:加入多个表基于价值

  1. 新闻帖子(我的内容)
  2. 访问者提交的材料(诗歌,艺术品等)

这些内容类型中的每一个都有自己的单独表格,每个表格都有一个存储帖子/提交标题的列。我用第三张表来存储新闻帖子和提交内容的评论。我在评论表中设置了一个名为content_category的列,它将添加“发布”“提交”的值以跟踪它所属的内容类型。还有另一列存储新闻帖子/访客提交的主键/ ID值,称为content_id

想法是,当从数据库中提取评论时,我还想显示帖子的标题或提交。我想要实现的逻辑基本上是这样的:如果记录的content_category列值为“post”,那么在post_ID上加入POSTS表,但如果content_category列的值为“submission”,则在submit_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

什么意思与不工作..你有错误..?或者你有我rng结果?并在这种情况下显示适当的数据样本和预期结果。 – scaisEdge

回答

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' 

希望它有帮助