gpt4 book ai didi

php - Mysql连接两张表并根据主键统计总记录数

转载 作者:行者123 更新时间:2023-11-29 01:26:20 26 4
gpt4 key购买 nike

我在 mysql 数据库上有两个表 vendormedicines 现在我需要根据供应商 ID 计算交易的药品总数,条件状态等于已支付,在单个查询并将其显示给我的用户

我的供应商表是这样的

| ID |   vendor_name    |
+----+------------------+
| 1 | Marakel Medicine |
| 2 | Ignacio Pharmacy |
| 3 | Rico Medicines |
| 4 | Marco Pharmacy |
+----+------------------+

我的 Medicines 表看起来像这样。

| ID | vendor_id | medicine_name  | Status  |
+----+-----------+----------------+---------+
| 1 | 1 | paracetamol #1 | paid |
| 2 | 1 | paracetamol #1 | paid |
| 3 | 2 | paracetamol #1 | pending |
| 4 | 2 | paracetamol #1 | paid |
| 5 | 4 | paracetamol #1 | paid |
+----+-----------+----------------+---------+

我的期望输出是这样的

+----+------------------+-----------+
| ID | vendor_name | Total Med |
+----+------------------+-----------+
| 1 | Marakel Medicine | 2 |
| 2 | Ignacio Pharmacy | 1 |
| 3 | Rico Medicines | 0 |
| 4 | Marco Pharmacy | 1 |
+----+------------------+-----------+

到目前为止我的代码在下面,我能够输出每个供应商我只是不知道如何根据那里的状态来计算它们,任何建议都很好!

SELECT * FROM vendors LEFT JOIN medicine ON vendor.ID = medicines.vendor_id

最佳答案

根据状态[已付款或待处理]和供应商名称在表上加入操作:

建议查询:

SELECT        vendor.ID, vendor.vendor_name, 
COUNT((CASE WHEN [status] <> 'pending' THEN 1 END)) AS 'Total Med'

FROM medicines RIGHT OUTER JOIN
vendor ON medicines.vendor_id = vendor.ID

GROUP BY vendor.vendor_name, vendor.ID

enter image description here

注意:此查询已在 MSSQL 中完成,您可以引用逻辑并在 MySQL 中尝试。

对应的MySQL语法:

SELECT vendor.ID, vendor.vendor_name, 
COUNT((CASE WHEN status <> 'pending' THEN 1 END)) AS 'Total Med'
FROM medicines
RIGHT OUTER JOIN vendor ON
medicines.vendor_id = vendor.ID GROUP BY vendor.vendor_name, vendor.ID

enter image description here

关于php - Mysql连接两张表并根据主键统计总记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46740606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com