0

首先,我发现了类似的问题答案,但它们似乎不适用于我的情况。

我有一个项目,我想显示相应的视频。视频链接存储在fe_media类型为 的表中Video。当前项目也有一些图像,它们存储在同一个表中,但类型为Image. 所有这些记录都通过规范化表链接。

对于我所阅读的内容,我的查询应该如下所示:


SELECT project.id, project.title, media.type, media.link
FROM projects AS project
     LEFT JOIN norm_project_media AS norm ON norm.n_project_id = project.id
     LEFT JOIN media AS media ON media.id = norm.n_media_id 
                                 AND media.type = 'Video'
WHERE project.id = '".$item."'

我得到了所有的项目结果,但NULL在媒体链接上。我知道$item值是正确的,应该显示视频链接,因为当我在子句AND media.type = 'Video'后添加行时,它会显示视频链接。WHERE这个解决方案的问题是,当某个项目在fe_media表格中没有视频时,什么都不会显示(甚至项目数据也不显示)。

:(

编辑: 修正了错字,仍然是同样的问题

4

1 回答 1

0

好的,我知道了

我更改了media.link记录的顺序,因此视频链接将位于顶部(高于所有NULL值),然后将限制设置为 1 条记录,如下所示:


SELECT project.id, project.title, media.type, media.link
FROM projects AS project
     LEFT JOIN norm_project_media AS norm ON norm.n_project_id = project.id
     LEFT JOIN media AS media ON media.id = norm.n_media_id AND media.type = 'Video'
WHERE project.id = '".$item."'
ORDER BY media.link DESC
LIMIT 1

也许不是最漂亮的解决方案,但至少它有效

于 2013-01-10T12:32:25.457 回答