![](/img/trans.png)
[英]SELECT SUM and COUNT, FROM different tables on same row, PHP and MySql
[英]MYSQL Sum and Count on different tables, in same query
我试图获得一些统计数据; 来自3个不同表格的总链接,用户和视图。 我正在尝试什么:
SELECT SUM(p.views), COUNT(c.id), COUNT(u.id)
FROM studenkel_userprefs as p, studenkel_content as c, studenkel_users as u
如果我在三个不同的查询中分别进行处理,则它们可以正常工作,但结果却比我想要的高出数千倍。 我猜他们会以某种方式彼此繁殖,提示?
谢谢
编辑:谢谢大家,非常感谢您的帮助,整理出来。
您在from中所做的事情称为没有条件的隐式内部联接。
这意味着您的最终视图具有p.rows * c.rows * u.rows
行,这就是为什么您得到怪异结果的原因。
如果您有3个问题,请分别询问,不要一次全部询问。
另外,如果您确实只希望一个请求,则可以使用以下丑陋的形式:
SELECT
SELECT SUM(views) FROM studenkel_userprefs as "sum_userprefs",
SELECT COUNT(id) FROM studenkel_content as "cnt_content",
SELECT COUNT(u.id) FROM studenkel_users as "cnt_users"
FROM DUAL;
你被允许“作弊”吗?
SELECT
(
SELECT
SUM(p.views)
FROM
studenkel_userprefs as p
) as `views`,
(
SELECT
COUNT(c.id)
FROM
studenkel_content as c
) as `content_count`,
(
SELECT
COUNT(u.id)
FROM
studenkel_users as u
) as `user_count`
这是因为您要对表进行笛卡尔联接,该联接将一个表中的行数乘以另一个表中的行数。 无需以JOIN ... ON
格式指定JOIN ... ON
,也无需通过在WHERE
子句中指定JOIN ... ON
条件,就可以得到唯一的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.