MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2250|回复: 2
打印 上一主题 下一主题

三表查询,包含count,sum,SQL该如何写?

[复制链接]
跳转到指定楼层
1#
发表于 2012-3-23 11:02:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位大侠,我在开发中遇到个问题,有三个表,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这样。

请问这样的需求,语句该怎么写?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2012-3-23 17:38:39 | 只看该作者
这种join语句写的过于复杂了(还有子查询),而且效率底下,你应该模仿着手册里的例子写。

你需要先想清楚业务逻辑,那么就好办了,再不行就用多个最简单的语句分别实现...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-9-20 23:31 , Processed in 0.063902 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表