mysql - 添加第四个表连接时结果减少

标签 mysql database join

编辑:现在由于某种原因,每个产品 ID 只显示一次,而不是取决于它有多少个变体?有任何想法吗? (我使用的查询是我列出的最后一个查询)

这是我的三表连接查询

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 数量,但由于某种原因,我只得到大约 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

最佳答案

尝试使用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

关于mysql - 添加第四个表连接时结果减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032417/

相关文章:

javascript - Nodejs 在每个请求中连接数据库

php - 使用事件记录或mysql从codeigniter中的多个表构造json

php - 在单独的数据透视表中按计数对行进行排序

mysql - 在交叉应用 SQL 中从最大值中选择属性

php - 插入 PDO 时遇到问题

java - 盐在我把它放在 mysql 上后就变了

mysql - 在选择子查询中使用 AVG 结果

mysql - 加入两个 MySQL 查询并得到相同的结果

mysql - 在 Yii 中查询大数据?

database - 使用 ORM 模型而不是正确的数据库建模