php - 显示最高报价,但仍然显示没有报价

标签 php mysql

我正在尝试显示商家及其最高折扣优惠。但我还是想展示没有offer的商家。

业务存储在business_tb

business_id | business_name
------------+---------------
     1      |      aaa
     2      |      bbb
     3      |      ccc

这些企业提供的折扣存储在 deal_offer_tb

deal_offer_id | business_id | deal_id 
--------------+-------------+----------
       1      |      1      |    3
       2      |      1      |    2
       3      |      2      |    0
       4      |      1      |    1
       5      |      3      |    3

折扣类型存储在deal_tb中。

deal_id | discount
--------+----------
    1   |    40%
    2   |    30%
    3   |    20%
    4   |    10%

所以我想要的显示应该是这样的:

 1 |  aaa | 40%
 2 |  bbb | ---
 3 |  ccc | 20%

但是对于我当前的查询:

SELECT a.business_id, a.business_name, c.discount
    FROM business_tb a
    LEFT JOIN (SELECT min(deal_id) AS deal_id, business_id FROM deal_offer_tb GROUP BY business_id) b ON a.business_id = b.business_id
    LEFT JOIN deal_tb c ON b.deal_id = c.deal_id

我只得到:

 1 | aaa | 40%
 3 | ccc | 20%

它不显示没有提供折扣的商家。

我应该如何获得我想要的输出?


更新:我不知道之前发生了什么,但我的查询正在按照我想要的方式运行。感谢那些回答的人的努力。欣赏它,伟大的时光!

最佳答案

我会通过使用子查询来找到每个企业的最大折扣来解决这个问题,加入 deal_offer_tbdeal_tb 表。然后,将这个子查询加入到business_tb表中,得到最终的结果。请注意,我使用初始 LEFT JOIN 来说明给定企业甚至可能没有与之关联的交易。在那种情况下,我为该企业指定了 0 的最大折扣(这是有道理的,因为从那时起将适用完整的正常价格)。

SELECT
    t1.business_id,
    t1.business_name,
    COALESECE(t2.max_discount, 0) AS max_discount
FROM business_tb t1
LEFT JOIN
(
    SELECT t1.business_id, MAX(t2.discount) AS max_discount
    FROM deal_offer_tb t1
    INNER JOIN deal_tb t2
        ON t1.deal_id = t2.deal_id
    GROUP BY t1.business_id
) t2
    ON t1.business_id = t2.business_id

关于php - 显示最高报价,但仍然显示没有报价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43795353/

相关文章:

php - 在 Python 中进行多个字符串替换的最快实现

php - 在父子表单无序列表 php 中打印分层数据?

mysql - PHP.ini Mysql 问题

python - 如何检查字符串是否包含 Django ORM 查询中列表的任何一个值

PHP如何执行传递cookie的http请求并将结果保存到字符串

php - 如何在 Zend Framework 中进行 Bind 和 LIKE

php - mySQL 仅选择大于零的列

php - 如何使用 php 和 mysql 按列用户名检查最后一行引用?

mysql - 在同一个 mysql 语句中创建、设置然后使用变量

php - 使用 jquery 导出 html,包括分页