【发布时间】:2013-10-22 15:15:13
【问题描述】:
我正在尝试获取一些统计信息;来自 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 studenkel_userprefs as p, studenkel_content as c, studenkel_users as u时,它将为您提供三个表格中所有行的笛卡尔积,也称为CROSS JOIN,您应该使用INNER JOIN,但您需要要指定这三个表之间的关系,请更新您的问题并说明它们之间的关系。 -
该查询将导致笛卡尔连接,您需要将您的表连接在一起。
-
使用正确的
JOIN语法,并告诉数据库 HOW 这些表相互关联,例如在这种情况下,您需要一个 where 子句:... WHERE studenkel_userprefs.foo = studenkel_content.bar AND etc....