[英]Joining tables to get the number of occurences with another column
我有2張桌子。 一個稱為subscriptions
,另一個稱為service_sushi_service
。 我正在嘗試獲取所有具有兩個以上不同service_id
的電話。 例如。
phone: 12345 service id: 12
phone: 12345 service id: 12
phone: 12345 service id: 8
phone: 12345 service id: 8
phone: 12345 service id: 13
phone: 22222 service id: 13
phone: 22333 service id: 3
我需要將其輸出為phone = 12345,出現次數= 3
這就是我到目前為止所得到的:而且我不知道如何進一步。
SELECT
`sub`.`phone` AS `phone`
FROM
`subscriptions` AS `sub`
LEFT JOIN `service_sushi_service` `sushi_service` ON `sushi_service`.`sushi_service_id` = `sub`.`sushi_service_id`
WHERE
date(`sub`.`added`) >= '2013-01-01'
GROUP BY `sub`.`phone`
SELECT
`sub`.`phone` AS `phone`,
COUNT(`sushi_service`.`sushi_service_id`) as occurences
FROM
`subscriptions` AS `sub`
LEFT JOIN `service_sushi_service` `sushi_service` ON `sushi_service`.`sushi_service_id` = `sub`.`sushi_service_id`
WHERE
date(`sub`.`added`) >= '2013-01-01'
GROUP BY `sub`.`phone`
HAVING occurences > 2
編輯: 應該指出,HAVING似乎只是MySQL的一種東西 。 以為我會將其發布以供您參考-http://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html
我在這段代碼中看到兩件事:
您為什么要進行LEFT JOIN
? 我說你需要一個直的INNER JOIN
。
您可以使用count(distinct field_name)
來獲取相應的值。
因此,SQL可能如下所示:
SELECT
`sub`.`phone` AS `phone`,
count(distinct `sushi_service`.`sushi_service_id`) as `occurrences`
FROM
`subscriptions` AS `sub`
JOIN `service_sushi_service` `sushi_service` ON `sushi_service`.`sushi_service_id` = `sub`.`sushi_service_id`
WHERE
date(`sub`.`added`) >= '2013-01-01'
GROUP BY `sub`.`phone`
HAVING `occurrences` > 2
完全不需要加入
select s1.phone, count(s1.*) from
(select unique phone, sushi_service_id from subscriptions) s1
group by s1.phone having count(s1.*) > 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.