1

在此处输入图像描述您好,我对实现这一目标的最佳方式感到困惑。到目前为止,我的查询如下。

基本上目前我有一个属于多个媒体组的图像。如果媒体组只有一个图像与之关联,我想要带回的是图像的随机媒体组。

例如,如果我有图像 1,2,3

图 1 属于媒体组 10、11、12 图 2 属于媒体组 13、14、15,图 3 属于媒体组 15、16、17

在这种情况下我想带回来的是

图 1 - 媒体组 11 图 2 - 媒体组 13 图 3 - 媒体组 15

我希望图像 3 是 15,因为 15 有两个图像与之关联,所以想把它带回来。请您建议我实现这一预期结果的最佳方法。

SELECT image_id, media_group_id, COUNT(*) as image_count FROM image_media_group
GROUP BY media_group_id

例如,上面的查询带回了下面的内容。如果媒体组中只有一个图像,我不想为每个媒体组带回 image_id 1432 我对媒体组的所有结果的更大查询如下

SELECT T.guid_id, T.id, mg.name, mg.alias_title, T.title, T.hits, al.title, T.distance, uf.real_name, uf.user_name,mg.alias_title,
COUNT(1) as image_count
FROM 
     (SELECT imx.id,imx.distance, imx.guid_id, imx.user_id, imx.hits, imx.title, imx.visible, imx.approved, imx.advertise_to
      FROM image imx  
      ORDER BY floor(RAND()*(SELECT count(1) FROM image))      
     ) AS T        
INNER JOIN image_media_group img ON T.id = img.image_id 
INNER JOIN media_group_title mg ON img.media_group_id =mg.media_group_id
INNER JOIN album_image ai ON T.id = ai.image_id
INNER JOIN album al ON ai.album_id = al.id
INNER JOIN user us ON T.user_id = us.id
LEFT JOIN user_flickr uf ON us.flickr_id = uf.id
LEFT JOIN user_site uss ON us.user_site_id= uss.id
WHERE T.visible = in_image_visible
AND T.approved = in_image_approved
AND (T.advertise_to <= in_date_time_now OR T.advertise_to IS NULL) 
GROUP BY img.media_group_id;

我试图在上面的 image_media_group 查询中实现所需的结果,因为我正在考虑更改主查询中的联接以包含此

4

0 回答 0