需要有关 sql 查询的帮助,该查询根据用户选择对图片库进行排序

Need assistance with an sql query that sorts image gallery based on user choice

我的网站有一个图片库,我希望用户能够按标题升序、标题降序和情感对图片库进行排序。这个网站是为患有痴呆症的人准备的,所以我记录了一张图片的积极或消极的情绪反应。

我的 title asc 和 desc 查询工作正常,但我正在努力处理按情感排序的最终查询。

我的数据库具有以下设置:

  1. images : id, title, ...etc //存储图像和属性

  2. imageaccess : imageID, userID //存储谁有权查看图片

  3. imageemotion : imageID, userID, happyCount, sadCount //存储图像引发的情绪

到目前为止,这是我提出的查询,但它不起作用:

SELECT * FROM images WHERE EXISTS (SELECT * FROM imageaccess WHERE imageaccess.imageID=images.id AND imageaccess.userID='$currentUserID') FULL OUTTER JOIN imageemotions ON imageemotions.imageID=images.id ORDER BY imageemotions.happyCount DESC  

基本上我需要一个查询,该查询将 return 用户有权访问的所有图像并按 'happyCount' 对结果进行排序。 当前,只有当用户注册了 happyCount 或 sadCount 时,才会将图像添加到 'imageemotion' table,但是如果这样可以使查询更容易,我可以更新网站,以便每张图像都包含快乐和悲伤数为 0.

真的希望这是有道理的,我知道它相当复杂...任何帮助将不胜感激!

非常感谢:)

请尝试以下查询:

SELECT 
    images.*,
    IFNULL(imageemotions.happyCount, 0) AS happyCount, 
    IFNULL(imageemotions.sadCount, 0) AS sadCount
FROM 
    images 
    INNER JOIN imageaccess 
        ON imageaccess.imageID = images.id 
    LEFT OUTER JOIN imageemotions 
        ON imageemotions.imageID = images.id 
WHERE 
    imageaccess.userID = '$currentUserID'
ORDER BY 
    IFNULL(imageemotions.happyCount, 0) DESC