获取分组的查询结果

时间:2014-10-30 10:20:04

标签: php mysql

我正在尝试获得一些查询结果。表格信息关于用户访问的网站中的哪个页面。所以我可以连续访问页面" A"每个示例和第二行,访问该页面的同一用户" B"。我想做一个查询,选择访问该页面的用户或用户" A"和" B"。我不能在我的条件下制作“和”,因为只有一列。

有表格结构

ID | user_id | page | views
1      1        A        44
2      1        B       120
3      2        A       140
4      3        A        22

我试过这个但是没有工作

SELECT users.name,users.id,users.email
                        FROM users
                        JOIN help_messages ON users.id = help_messages.id_user
                        WHERE (PAGE LIKE  '%clubs%' or PAGE like '%profile%') and views >= 1
                        GROUP BY help_messages.id_user, help_messages.page

请任何解决方案。感谢

2 个答案:

答案 0 :(得分:0)

这种方法的一般方法使用聚合和having子句:

select user_id
from table t
group by user_id
having sum(page = 'A') > 0 and sum(page = 'B') > 0;

having子句中的第一个条件计算具有'A'且仅允许具有至少一个此类行的user_id的行数。第二个条件对'B'执行相同的操作。

这是一种通用方法,因为很容易添加其他页面。此外,如果您想要访问'A'而不是'B'的人,您只需使用:

having sum(page = 'A') > 0 and sum(page = 'B') = 0;

答案 1 :(得分:0)

看看这是否适合你:

SELECT sub1.* FROM
(SELECT * FROM users WHERE page = 'A') AS sub1
JOIN
((SELECT * FROM users WHERE page = 'B') AS sub2
ON (sub1.user_id = sub2.user_id)