具有首选项和GROUP BY的Mysql JOIN表

时间:2015-06-25 15:36:22

标签: php mysql left-join find-in-set

我正在处理文件/图像数据库。 我有一个索引文件名的表,并将它们附加到一张专辑'

FILES TABLE
file_id | file_name | album_id
1       | image x   |  2
2       | image y   |  2

第二个表存储文件的位置和各种大小

SOURCE TABLE
source_id | file_id | source_size | source_url
1         |  1      | original    | //... 
2         |  1      | thumbnail   | //... 
3         |  2      | original    | //... 
4         |  3      | original    | //... 

目前,' source_size'列被列为文本(原始,缩略图,预览等..)。

我仍然努力在source_size上使用首选项查询表,同时仍然返回该相册中的所有文件。

到目前为止它看起来像这样:

SELECT 
f.*, s.*
FROM source s
INNER JOIN files f ON f.file_id=s.file_id 
WHERE f.album_id="2" 
GROUP BY s.file_id
ORDER BY FIND_IN_SET(s.source_size,"thumbnail, original") DESC

我希望首先以缩略图格式返回文件的source_id,但如果没有,则只返回找不到匹配项的原始大小文件。

在将来的查询中,可能会偏好原件或预览。

1 个答案:

答案 0 :(得分:0)

这似乎暂时有用,但不确定它是否正确...

java.oracle.com