Mysql 联接选定行
首先,我找到了simular和,但它们在我的情况下似乎不起作用 我有一个项目,我想显示相应的视频。视频链接以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
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