繁体   English   中英

PHP / MySQL-统计查询中的项目

[英]PHP/MySQL - Counting items within a query

我的数据库表有以下结果:

在此处输入图片说明

查询:

SELECT 
service_titles.user_id, service_titles.slide_id, service_titles.name as title_name ,service_names.name as service_name 
FROM service_names 
INNER JOIN service_titles ON service_names.title_id = service_titles.id

所以需要发生的是:

  • 如果用户有2个唯一的服务标题,则该标题的service_names的最大数量为6
  • 如果用户拥有1个服务标题,则该标题的最大service_names数量为16

我将使用PHP进行所有编码,但是我想知道如何解决这个问题。 我需要一种方法来计算该用户和幻灯片有多少个唯一的service_titles,然后计算每个标题有多少个服务项。

谢谢你的帮助!

SELECT COUNT(DISTINCT service_titles.name)
FROM service_names
INNER JOIN service_titles ON service_names.title_id = service_titles.id
GROUP BY service_titles.user_id, service_titles.slide_id

这将为您提供每个user_id / slide_id组合不同的title_name的数量。

SELECT COUNT(DISTINCT service_names.name)
FROM service_names
INNER JOIN service_titles ON service_names.title_id = service_titles.id
GROUP BY service_titles.user_id, service_titles.slide_id

...这就是相同的不同service_name的数量。 如果要在一个查询中同时使用这两个查询,则可以将两个COUNT放在一起,因为无论如何都使用相同的GROUP BY

您可以在查询中使用CASE语句来更改service_names的最大数量。

参见MySQL CASE语句参考

在SQL本身中执行此操作比在PHP中进行评估更快。

要计算多少个不同的标题,您可以尝试:

SELECT user_id, COUNT(DISTINCT name)
FROM service_titles
GROUP BY user_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM