php - 当左连接找不到匹配项时显示空结果

标签 php mysql sql

我在加入 left 时遇到问题。它工作正常,但我没有看到空结果。它连接三个表——categories、product_categories 和 order_products。

堆栈用户发出的查询如下所示:

       SELECT
categories.name,categories.id,
SUM((orders_products.product_price_gross + orders_products.option_price)*(1 - (orders_products.rebate/100))  * orders_products.product_qty) as suma
FROM orders_products
LEFT JOIN product_categories
ON product_categories.product_id = orders_products.product_id
LEFT JOIN categories
ON product_categories.category_id = categories.id
GROUP BY categories.name, categories.id
ORDER BY suma DESC

我不确定如何升级此查询 - 我需要查看从未售出的商品以显示在商店统计信息中。

希望你能帮助我。

亲切的问候 标记

最佳答案

您想查看尚未售出的产品吗?您的主表是交易表orders_products。因此,任何未“订购”的产品都不会显示。互换 product_categoriesorders_products 即可实现您想要的效果。如果 JOIN 语句找不到“order_products”表中列出的 product_id,这将列出所有类别并清空“suma”

SELECT
    categories.name,
    categories.id,
    SUM((orders_products.product_price_gross + orders_products.option_price)*(1 - (orders_products.rebate/100))  * orders_products.product_qty) AS suma
FROM product_categories
LEFT JOIN orders_products 
    ON product_categories.product_id = orders_products.product_id
LEFT JOIN categories
    ON product_categories.category_id = categories.id
GROUP BY categories.name, categories.id
ORDER BY suma DESC

关于php - 当左连接找不到匹配项时显示空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26969658/

相关文章:

php - 水平显示MySQL记录

mysql - 试图让 mysql 子字符串搜索工作

mysql - 前导逗号还是尾随逗号?

sql - 重用的T-SQL游标的起始位置?

java - 如何使用 UCanAccess 更改表

php - 使用 strpos 将单词匹配到字符串的末尾

php - 高级字符串替换为起始长度

php - 显示带空格或中断的提取数据 - PHP

mysql - Mongodb 与 MySql 搜索优化

php - 使用 fopen 时 mysql 无法连接