我有一个PHP / MYSQL网站,通过它我发布了两种类型的内容:
这些内容类型中的每一个都有自己的独立表,每个表都有一个存储帖子/提交标题的列。我用第三个表来存储新闻帖子和提交的评论。我将评论表设置为有一个名为 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'
非常感谢您的帮助:(
答案 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'
希望有所帮助