0

編集: なんらかの理由で、バリエーションの数に依存するのではなく、各 productid が一度だけ表示されるようになりましたか? 何か案は?(私が使用しているクエリは、リストした最後のクエリです)

これが私の3つのテーブル結合クエリです

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 の結果が得られ、すべてが正しく整理され、配置されています。

ここで、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 
    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
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
4

2 に答える 2

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
left outer join xcart_images_D xi on xi.optionid = xco.optionid
group by xp.product
order by xp.product desc
于 2012-04-05T16:36:54.943 に答える
1

最後のテーブルで左結合を使用します。

于 2012-04-05T16:37:17.593 に答える