作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
主要问题是关系部分的“WHERE IN”,它将找到的行相乘。
例如,我添加了 GROUP_CONCAT 以便更好地查看发生的情况:
SELECT COUNT(*),
GROUP_CONCAT(sections.name SEPARATOR '; ')
FROM users
LEFT JOIN users_sections ON (users.id = users_sections.user_id)
LEFT JOIN sections ON (users_sections.section_id = sections.id)
GROUP BY users.id
Finds:
'2', 'Registered; admins'
'3', 'Registered; admins; dudes'
'1', 'Registered'
找到3行,正确,但结果没用。
现在添加 WHERE IN 部分:
SELECT COUNT(*),
GROUP_CONCAT(sections.name SEPARATOR '; ')
FROM users
LEFT JOIN users_sections ON (users.id = users_sections.user_id)
LEFT JOIN sections ON (users_sections.section_id = sections.id)
WHERE sections.id IN (2,3)
GROUP BY users.id
Finds:
'2', 'Registered; admins'
'2', 'Registered; admins'
'1', 'Registered'
即使是正确的,但没用。我需要一个“3”作为 COUNT 个结果。
好吧,让我们删除 GROUP_CONCAT 并...祈祷
SELECT COUNT(*)
FROM users
LEFT JOIN users_sections ON (users.id = users_sections.user_id)
LEFT JOIN sections ON (users_sections.section_id = sections.id)
WHERE sections.id IN (2,3)
GROUP BY users.id
Find:
'2'
'2'
'1'
和以前一样。让我们试试这个:
SELECT COUNT(*) > 0
...
Find:
'1'
'1'
'1'
嘿,看起来不错!让我们尝试一下(希望最终):
SELECT SUM(COUNT(*) > 0)
...
Find:
Invalid use of group function
好伤心...
我怎样才能得到计数,或者这是不可能的?
最佳答案
您想要做的(如果我没读错的话)是计算适用特定条件的不同用户 ID。我无法从中得到真正的问题,但我认为你需要它:
SELECT
COUNT( DISTINCT users.id)
FROM
users
LEFT JOIN users_sections ON (users.id = users_sections.user_id)
LEFT JOIN sections ON (users_sections.section_id = sections.id)
WHERE
sections.id IN (2,3)
关于php - count() 具有一对多关系和 WHERE IN 的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20561612/
我是一名优秀的程序员,十分优秀!