0

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

在此处输入图像描述

查询:

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_name 数将为6
  • 如果用户有 1 个服务标题,则该标题的最大服务名称数将为16

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

谢谢你的帮助!

4

3 回答 3

1
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_names 的数量。

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

...这就是相同的不同服务名称的数量。如果您想在一个查询中同时使用两者,则可以将两个COUNTs 放在一起,因为无论如何您都使用相同的GROUP BY

于 2012-02-13T15:02:38.693 回答
0

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

请参阅MySQL CASE 语句参考

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

于 2012-02-13T15:01:13.987 回答
0

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

SELECT user_id, COUNT(DISTINCT name)
FROM service_titles
GROUP BY user_id
于 2012-02-13T15:02:16.093 回答