我需要完成对4个表的查询
图片:id
标签:id,name
TagImages:image_id,tag_id(图像和标签的外键)
ColorImages:image_id,hex,value(图像的外键)
我希望获得具有共同标签和颜色的类似图像。图像应至少有一个共同的标签,但按相似颜色排序。
我写了这样的标签相似性查询:
SELECT TagImages.imageId , count(*) AS q
FROM TagImages
Join colorImages ON colorImages.imageId = TagImages.imageId
WHERE TagImages.tagId IN (
SELECT TagImages.tagId
FROM TagImages
WHERE TagImages.imageId=41
)
AND TagImages.imageId!=41
GROUP BY TagImages.imageId
ORDER BY q DESC
它工作正常,但它需要添加颜色'order by',用目标图像的颜色对图像进行排序。 ColorImages表有一个名为value的列,表示图像中该颜色的百分比,因此最好使用值最高的颜色对图像进行排序。
答案 0 :(得分:0)
没有查看表结构和数据我可以提出这个并且它应该可以工作,如果你把表结构与一点数据脚本放在一起,这样我们就可以使用它并且可以带来所需的结果。
SELECT TagImages.imageId , count(*) AS q, ColorImage.value
FROM TagImages
Join colorImages ON colorImages.imageId = TagImages.imageId
WHERE TagImages.imageId=41
GROUP BY TagImages.imageId, ColorImage.value
ORDER BY q DESC, ColorImage.value