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

标签 php mysql

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

我的供应商表如下所示

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

我的药品表如下所示。

| 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/

相关文章:

php - 如何通过 docker-php-ext-install 为 php 安装扩展?

php - 使用 php mysqli 从两个连接的表中获取数据

php - 如何将 mysql_query 结果的一列放入数组中?

mysql pagination left join vs. union LIMIT

php - codeigniter order by 不适用于零值

php - 在 php 中使用 Decorator 的完整继承行为

php - 使用 jQuery AJAX 通过 FormData 上传文件

php - PHP Web 应用程序的页面加载

php - MySQL 日期选择查询不起作用

php - 如何在没有 'on duplicate key update' 的情况下使用 insertFromSelect(...) ?