2012-04-05 11 views
0

編集:何らかの理由で、それぞれのproductidがいくつのバリエーションを持つかによって1回だけ表示されますか?何か案は?ここでは(私が使用しているクエリは、私が列挙されている最後のクエリである)4番目のテーブルを追加すると結果が減少する

は今ここにすべてが素晴らしい作品クエリ

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 
ORDER by xp.product DESC 

、私は約2,000の結果を得る、すべてが組織され、正しく配置されている私の3台が参加しています。

xi.idごとにxi.optionidの数をカウントするために4番目の表を追加したいと思いますが、なんらかの理由で約200件の結果しか得られず、理由を特定できません。

SELECT xp.productid, xp.product, xc.classid, xco.optionid, xco.option_name, count(xi.optionid) as cnt 
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 
LEFT JOIN xcart_images_D xi ON xi.optionid = xco.optionid 
GROUP BY xp.product 
ORDER by xp.product DESC 
+0

最初のクエリの画像テーブル –

+0

のレコード数は何ですか?GROUP BY文はありません。また、さまざまな種類のJOINを使用しています。 –

答えて

1

代わりLEFT OUTER JOINを使用してみてください - ここで私は

SELECT xp.productid, xp.product, xc.classid, xco.optionid, xco.option_name, count(xi.optionid) as cnt 
    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.product 
    ORDER by xp.product DESC 

を実行しようとしていますクエリは、ここで私が現在使用しているテーブルの各

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) 

クエリのための基本的なスキーマがありますされ。

select xp.productid, 
    xp.product, 
    xc.classid, 
    xco.optionid, 
    xco.option_name, 
    count(xi.optionid) as cnt 
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 
left outer join xcart_images_D xi on xi.optionid = xco.optionid 
group by xp.product 
order by xp.product desc 
+0

何らかの理由で、各productidは、いくつのバリエーションがあるかによっては1回だけ表示されますか?何か案は? – Eric

+1

xp.productでグループ化しています。 1つの製品にmabnyのproductidがあり、それらをすべて表示したい場合は、 'group by xp.product、xp.productid'を選択します。 – RedFilter

1

ユーザーa最後の表を左結合します。

関連する問題