1

也许现在还为时过早,但我无法弄清楚为什么我无法将第五张表的查询与我当前的查询语句连接起来。

这是我当前的查询

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

您正在使 xcart_images_t 的 JOIN 取决于您的 (xi) xcart_images_D 表。因此,如果您的 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 回答