php - MySQL 加入特定的 WHERE 子句

标签 php mysql

我有一个简单的数据库

enter image description here

通过这个查询,我得到了所有用户和他们购买的产品数量:

SELECT
  c.id,
  cd.name,
  cd.surname,
  COUNT(p.name) as bought
FROM shopping s
 JOIN client c ON s.client_id = c.id
 JOIN client_details cd ON c.id = cd.client_id
 JOIN product p ON s.product_id = p.id
GROUP BY c.id;

很好,但我必须选择所有用户和购买的特定产品的数量。通过此查询,我仅在用户至少购买了一种产品时才得到它:

SELECT
  c.id,
  cd.name,
  cd.surname,
  COUNT(p.name) as bought
FROM shopping s
 JOIN client c ON s.client_id = c.id
 JOIN client_details cd ON c.id = cd.client_id
 JOIN product p ON s.product_id = p.id
WHERE p.name = 'sugar'
GROUP BY c.id;

我想获取所有用户的列表,如果特定用户没有购买特定产品,则输出应该为 0。

最佳答案

使用条件聚合:

SELECT c.id, cd.name, cd.surname,
       MAX(p.name = 'sugar') as SugarFlag
FROM shopping s JOIN
     client c
     ON s.client_id = c.id JOIN
     client_details cd
     ON c.id = cd.client_id JOIN
     product p
     ON s.product_id = p.id
GROUP BY c.id;

关于php - MySQL 加入特定的 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34579285/

相关文章:

php - 通过 CSV 添加新信息时,数据库中的旧信息不显示 - phpMyAdmin

mysql - 添加到现有选择脚本的更新脚本 - 如何在一个脚本中选择然后更新>

c# - EF Core 和 MySql 查询太慢

php - 如果它在 php 中为空,如何以较低的顺序对空键和值进行排序

php - 使用 jQuery 将 JSON 发送到服务器

php - 当 GoDaddy 主机上的 JSON 内容超过 1MB 时,ajax GET 失败

php - 0 : syntax error, 意外 '->' (T_OBJECT_OPERATOR)

MySQL2 gem : Lost connection to MySQL server during query

javascript - 更新 MYSQL 表给出成功消息,但不更新表

javascript - 我怎样才能制作打印报告的打印按钮?