我一直在为此绞尽脑汁,但没有取得任何进展.我对sql不太好,所以我希望答案很简单,我只是不知道.
我有2个表:一个名为“ images”的表,其中包含我想要的数据,并用主键“ imageID”进行组织.另一个称为“ productPhotos”,它包含两个字段(加上主键):imageID和productID.因此,对于给定的产品,可能会有多个图像,并且给定的图像可能用于表示多个产品.
到目前为止,它运行良好,但是问题来了.我有一个动态生成的产品ID列表,我想加载代表这些产品的所有图像.而且,我不仅要加载它们,而且还希望按照列表中产品的顺序进行加载.
因此,如果我的产品列表是“ 5、2、4”,我希望我的输出列表首先包含产品5的所有图像,然后是产品2的所有图像,然后是产品4的所有图像.请特别注意子组中的顺序.
获取正确的图像非常简单,但是以正确的顺序获取它们是可恶的.我想出了如何以正确的顺序获取想要的图像的ID,但是到目前为止,实际上我没有获得单独的MySQL调用就获取了这些图像.我尝试设置一个临时表,将所需的ID存储在@variable中,并在ORDER BY FIELD()和ORDER BY FIND_IN_SET()上进行了许多不同的更改.
到目前为止,这是我得到的:
从productPhotos中选择imageID,在productID为(5,2,4)的情况下按字段排序(specificProductUID,5、2、4);
这样就成功地按正确的顺序返回了一组imageID,但是我一直受困于从那里获取来自image表的那些imageID的数据.我知道我可以很容易地做到这一点,只需在PHP中使用两个单独的数据库调用(一个用于获取imageID,另一个用于加载图像),但是(我认为)这将对性能产生重大影响,而且看起来应该有更好的方法来做到这一点.
在此先感谢您的帮助.
SELECT images.*
FROM images
INNER JOIN productPhotos ON images.imageID = productPhotos.imageID
WHERE productID in (5,4)
ORDER BY FIELD(specificProductUID,5,4);