2012-04-04 46 views
0

我試圖生成產品,classid,optionid,'圖像'的列表(從四個表)。每個產品可以有多個ClassID(一對多),每個ClassID可以有多個OptionID,每個OptionID可以有許多圖像。最後對於圖像表(xcart_images_D),我想count()每個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 

回答

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 
+0

謝謝你的幫助。 由於某些原因,當我添加計數結果的數量從2,000縮減到約200.任何想法爲什麼? – Eric 2012-04-05 15:03:06