MariaDB社区

标题: 三表查询,包含count,sum,SQL该如何写? [打印本页]

作者: seeky    时间: 2012-3-23 11:02
标题: 三表查询,包含count,sum,SQL该如何写?
请教各位大侠,我在开发中遇到个问题,有三个表,user(用户)表,order(订单)表,app(订单评价)表,现在的需求是要用一个SQL联合查询出某个用户发不过的订单总数,及订单总金额,以及该用户的订单评价总条数。SQL我是这样写的:
SELECT u.id,u.`name`,COUNT( DISTINCT a.id ),COUNT( DISTINCT o.id ),SUM(o.money)
FROM `user` u
INNER JOIN (SELECT id,to_user_id FROM `app` GROUP BY id) a ON u.id = a.to_user_id
LEFT JOIN (SELECT id,use_id,money FROM `order` GROUP BY id) o ON u.id = o.use_id
WHERE u.id =7;

但是查询出来的SUM值不对,比如正确的应该是10000,但实际返回的结果里,这个值里重复计算了很多次,变成60000这样。

请问这样的需求,语句该怎么写?

作者: kider    时间: 2012-3-23 17:38
这种join语句写的过于复杂了(还有子查询),而且效率底下,你应该模仿着手册里的例子写。

你需要先想清楚业务逻辑,那么就好办了,再不行就用多个最简单的语句分别实现...





欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2