1

時期尚早かもしれませんが、5 番目のテーブルのクエリを現在のクエリ ステートメントに結合できない理由がわかりません。

これが私の現在のクエリです

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 JOIN xcart_images_D xi ON xi.optionid = xco.optionid
GROUP BY xp.product, xco.optionid
ORDER by xp.product DESC

xcart_images_Dに非常によく似たテーブルが設定された次のクエリを追加しようとしています

JOIN xcart_images_T xiT ON xi.id = xiT.id

今のところ、結合を追加した後、結果は約 2,000 から 20 になりました。

4

1 に答える 1

1

これを行うことにより:

JOIN xcart_images_T xiT ON xi.id = xiT.id

(xi) xcart_images_D テーブルに依存する xcart_images_t の JOIN を作成しています。したがって、xcart_images_D テーブルが一致しない場合、xcart_images_T も一致を返しません。

また、JOIN を指定するだけで、暗黙的に INNER JOIN を示しており、これも問題の一部である可能性があります。xcart_images_T で一致する必要がない場合は、LEFT JOIN にする必要があります。

xcart_images_T は xcart_images_D に似ているように見えるので、LEFT JOIN を試して、xco.optionid を JOIN キーとして使用します。

LEFT JOIN xcart_images_T xiT ON xiT.id = xco.optionid

また、xcart_images_T または xcart_images_D からのフィールドが表示されることが予想される場合は、それらを SELECT に追加する必要があります。それが役立つかどうかを確認してください。

于 2012-04-06T14:43:20.993 に答える