0

我正在尝试生成产品列表(来自四个表),classid,optionid,'images'。每个产品可以有多个 ClassID(一对多),每个 ClassID 可以有多个 OptionID,每个 OptionID 可以有很多很多图片。最后,对于图像表(xcart_images_D),我想计算()每个 productID 有多少图像。如何在不使用多个语句的情况下有效地查询所有这些信息?

这是每个表的基本信息

xcart_products
    + productid*
    + product
xcart_classes - 
    + classid*
    + productid (xcart_products.productid)
xcart_class_options -
    + optionid*
    + classid (xcart_classes.classid)
    + option_name
xcart_images_D - 
    + imageid*
    + optionid (xcart_class_options.optionid)
+ id (xcart_products.productid)

 * primary/foreign key

我有三个表连接工作,但我无法让 xcart_images_D 表工作,我也不明白我将如何完成计数。谁能指出我正确的方向?

值得一提的是我的三表连接

SELECT xp.productid, xp.product, xc.classid, xco.optionid, xco.option_name
FROM xcart_products xp
JOIN xcart_classes xc ON xp.productid = xc.productid and xc.class = 'Color'
JOIN xcart_class_options xco ON xc.classid = xco.classid
WHERE xc.class = 'Color'
ORDER by xp.productid DESC

当我尝试添加以下行时,结果数量减少了大约一半。

 JOIN xcart_images_D xi ON xi.optionid = xco.optionid
 GROUP BY xp.productid
4

1 回答 1

1
SELECT xp.productid, count(xi.imageid)
FROM xcart_products xp 
INNER JOIN xcart_classes xc ON xp.productid = xc.productid AND xc.class = 'Color'
INNER JOIN xcart_class_options xco ON xc.classid = xco.classid 
INNER JOIN xcart_images_D xi ON xi.optionid = xco.optionid
GROUP BY xp.productid
ORDER by xp.productid DESC 
于 2012-04-04T23:07:32.753 回答