Mysql 联接选定行

Mysql 联接选定行,mysql,Mysql,首先,我找到了simular和,但它们在我的情况下似乎不起作用 我有一个项目,我想显示相应的视频。视频链接以video类型存储在表fe\u media中。当前项目还有一些图像,它们存储在同一个表中,但类型为Image。所有这些记录都通过标准化表进行链接 就我所阅读的内容而言,我的查询应该如下所示: SELECT project.id, project.title, media.type, media.link FROM projects AS project LEFT JOIN no

首先,我找到了simular和,但它们在我的情况下似乎不起作用

我有一个项目,我想显示相应的视频。视频链接以
video
类型存储在表
fe\u media
中。当前项目还有一些图像,它们存储在同一个表中,但类型为
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
值是正确的,应该显示视频链接,因为当我在
WHERE
子句之后添加行
和media.type='video'
,它会显示视频链接。此解决方案的问题在于,当某个项目在
fe_media
表中没有视频时,将不会显示任何内容(甚至项目数据)

:(

编辑: 修正了打字错误,还是同样的问题

好的,明白了

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


选择project.id、project.title、media.type、media.link
从项目到项目
左键将norm\u project\u media作为norm.n\u project\u id=project.id上的norm连接
在media.id=norm.n\u media\u id和media.type='Video'上作为媒体左键连接媒体
其中project.id='“$item.”
按媒体订购。链接说明
限制1


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

为什么不在该表中添加一个额外的
JOIN

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