【问题标题】:Select sold and unsold products选择已售出和未售出的产品
【发布时间】:2014-01-13 17:16:41
【问题描述】:

我正在尝试选择所有产品名称以及当前日期已售出的数量,但我遇到了问题,因为并非所有产品每天都售出。 (产品未售出时必须返回0)

餐桌用品

ID         NAME
1          APPLE
2          PINEAPPLE
3          COFFE

餐桌销售

ID         DATE
1          2014-01-13
2          2014-01-13   

TABLE PRODUCTS_AND_SALES

SALE_ID    PRODUCT_ID      AMOUNT
1          3               2
1          1               1
2          3               1

我期望收到的:

PRODUCT        AMOUNT
APPLE          1
PINEAPPLE      0
COFFE          3

我收到了什么:

PRODUCT        AMOUNT
APPLE          1
COFFE          3

我的查询:

select product, sum(amount) from products
join products_and_sales using (product_id)
join sales using (sale_id)
where date(dt_sale) = curdate()
group by product_id;

【问题讨论】:

  • 您能展示一下您尝试过的内容吗?让我们看看你做错了什么

标签: mysql sql select product


【解决方案1】:

试试这个

  select name as PRODUCT  ,  ifnull(sum(AMOUNT),0) amount from products p
  left join PRODUCTS_AND_SALES ps
  on p.id = ps.PRODUCT_ID
  group by product

DEMO HERE

编辑:

如果你想使用特定日期然后使用这个

 select name as PRODUCT ,if(date = '2014-01-13' ,ifnull(sum(AMOUNT),0), 0 ) amount 
 from  products p

 left join PRODUCTS_AND_SALES ps on p.id = ps.PRODUCT_ID
 left join SALES s on s.id = ps.SALE_ID
 group by product 

DEMO HERE

只需将此日期2014-01-13 替换为您想要的日期即可。 (curdate()) 或其他什么

【讨论】:

  • 但我只想要在特定日期销售的产品。仅针对昨天销售的产品尝试查询 (2014-01-12)
【解决方案2】:

使用 OUTER JOIN 代替 INNER JOIN

如果您显示您使用的查询,我们会为您更正。

【讨论】:

    【解决方案3】:

    试试这个...

    SELECT pr.NAME, IFNULL(SUM(prs.AMOUNT), 0)
    FROM PRODUCTS pr
        LEFT OUTER JOIN PRODUCTS_AND_SALES prs ON pr.id = prs.product_id
        LEFT OUTER JOIN SALES sl ON sl.id = prs.sales_id AND date(s1.dt_sale) = curdate()
    GROUP BY pr.NAME
    

    【讨论】:

    • 但我只想要在特定日期销售的产品。仅针对昨天销售的产品尝试查询 (2014-01-12)
    • @lizard 将过滤器添加到连接条件中,如修改后的答案所示。
    • 不能正常工作...它退回了自第一次销售以来销售的所有产品。但这是我得到的最接近的,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多