【发布时间】:2017-05-05 16:49:41
【问题描述】:
我有 3 个表:人物、图像和评论。人员具有字段 id 和 name。图像是针对特定人的,因此它具有 id、person_id、image_name。评论是一种混合表,因为评论既可以直接针对个人,也可以针对形象——因此它具有字段 id、person_id、image_id 和 comment。
两个 cmets 使用同一张表,因为这两种情况下的评论插件是相同的,而且我还需要在实时提要中显示所有 cmets,因此将它们放在一个表中似乎更容易。
我现在的问题是,如果评论是针对人的还是针对图像的,我如何编写一个查询,以提供所有相关数据而无需考虑。
Select 应该为每个带有附加数据的评论返回一行: 评论 image_name(如果评论绑定到 image_id) person_name(无论评论是直接与人或图像相关联)
我面临的问题是,如果存在 image_id,我真的不知道如何通过图像选择人,否则直接通过 person_id 选择人。也很难找到这种解决方案,因为它很难用语言表达。
编辑,添加 sqlfiddle: http://sqlfiddle.com/#!9/7fa06a/1
目前缺少的是第二行的人员数据。该数据应该可用,因为图像表有 person_id 但我不知道如何选择它。
【问题讨论】:
-
如果您包含来自每个表的示例数据、您尝试从该数据中获取的输出,并展示您自己解决此问题的努力,这将有所帮助。你能edit你的帖子包含这些信息吗?
-
编辑了主帖并添加了sqlfiddle