MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 4181|回复: 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|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-6-2 00:16 , Processed in 0.065666 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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