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

时间:2015-04-08 01:35:59

标签: mysql sql database sorting gallery

对于我的网站,我有一个图片库,我希望用户能够按标题asc,标题desc和情感对图库进行排序。这个网站是针对痴呆症患者的,所以我正在记录一个图像的正面或负面情绪反应。

我有标题asc和desc查询工作,但我正在努力与最终查询进行情感排序。

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

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

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

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

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

    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  
    

    基本上我需要一个查询,它将返回用户有权访问的所有图像,并按' happyCount'对结果进行排序。 目前,图片只会添加到' imageemotion'表格在用户注册了happyCount或sadCount时,如果它会使查询更容易,我可以更新网站,以便每个图像都包含一个快乐和悲伤的计数为0。

    真的希望这是有道理的我知道它相当复杂......任何帮助都会非常感激!

    非常感谢:)

1 个答案:

答案 0 :(得分: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