VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2621|回复: 14

大家帮帮忙啊,快急死了,谢谢!!!

[复制链接]

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-11 23:30:02 | 显示全部楼层 |阅读模式
3张主要的表
eqs_users:用户信息表 字段 id(主键) 其他信息字段
ws_users_info:用户详细信息表 字段 uid 其他信息字段
ws_cn_sell:出售信息表 字段 uid 其他信息字段
三张表,id,uid,uid是关联的,先要统计出发布出售信息超过10条以上的客户,并要分页
这是我取数据的语句
SELECT a.id,a.username,a.name,a.ip,b.* ,(SELECT count(*) FROM ws_cn_sell sell WHERE sell.uid=b.uid ) AS sell_num FROM eqs_users a LEFT JOIN ws_users_info b ON a.id=b.uid WHERE 1=1 HAVING sell_num >=10 ORDER BY a.register_date DESC LIMIT 0, 20
下面是我用来分页,统计出发布出售信息超过10条以上的客户
SELECT COUNT(*) FROM eqs_users a LEFT JOIN ws_users_info b ON a.id=b.uid WHERE 1=1 HAVING sell_num >=10
很明显统计是错误的因为根本就没有sell_num。
请问我要实现上面的功能,要怎么写语句,既要搜索出来,又要总数来分页???
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-4-12 19:15:01 | 显示全部楼层
建议:用两天语句
第一条计算总数
第二条来查询(根据页数获得相应的数量)

回复

使用道具 举报

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-4-28 12:00:01 | 显示全部楼层
楼上的具体点啊
回复

使用道具 举报

0

主题

17

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
发表于 2020-4-29 13:15:02 | 显示全部楼层
建议你分组进行,把第二个表进行分组,然后提取出信息数量超过10的用户ID,在到另外的那个表里面进行查信。如果你使用的是5.0以上的MySQL,可以使用语句嵌套,但是,如果你时候的5.0以下的,就得使用两条sql语句了,这个是没有办法的事情T_T
回复

使用道具 举报

0

主题

24

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-5-10 21:00:01 | 显示全部楼层
统计总数可以这样做:
SELECT SUM(u_num) AS total
FROM
(
        SELECT COUNT(*) AS u_num FROM `ws_cn_sell` GROUP BY uid

) AS t

回复

使用道具 举报

0

主题

24

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-5-12 14:45:02 | 显示全部楼层
突然想起来上面那个没有加10条以上的条件.
试试下面这个吧,
SELECT SUM(u_num) AS total
FROM
(
        SELECT IF(count(*) > 10, count(*) , 0) as u_num
        FROM `ws_cn_sell`
        GROUP BY uid
) AS t

回复

使用道具 举报

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-5-14 10:00:01 | 显示全部楼层
十分感谢楼上的,我试了,可以的,修改一个你的笔误
SUM(u_num) => COUNT(u_num)
顺便问一下,如果我还有一张表ws_cn_buy(求购信息表,关联字段也是uid),就是要统计发布出售信息10以上,求购信息5条以上的客户,要怎么统计总数???
回复

使用道具 举报

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-5-15 18:45:02 | 显示全部楼层
SELECT SUM(u_num) AS total
FROM
(
        SELECT IF(count(*) > 10, count(*) , 0) as u_num
        FROM `ws_cn_sell`
        GROUP BY uid
) AS t
这句统计出来是不对的,不知道为什么
我改了一下就对了:
SELECT COUNT(u_num) AS total
FROM
(
        SELECT count(*) as u_num
        FROM `ws_cn_sell`
        GROUP BY uid having u_num>=10
) AS t
回复

使用道具 举报

0

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-6-3 17:45:01 | 显示全部楼层
1、你应该弄清楚你要干什么?
“要统计出发布出售信息超过10条以上的客户”的信息来源于“ws_cn_sell:出售信息表”
其他都是辅助信息
所以就没有必要用 LEFT JOIN ,只需内连接即可
2、后一句sql,从昨天见到后就我就没有弄明白你是在干什么


回复

使用道具 举报

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-6-4 13:00:02 | 显示全部楼层
老大其实就是这样
select uid,count(*) as aa from ws_cn_sell group by uid having aa>10 order by aa desc
这是取出发布出售信息超过10条以上的客户

我现在要统计出(发布出售信息超过10条以上的客户)的客户总数,以便用来分页:
select uid,count(*) as aa from ws_cn_sell group by uid having aa>10 order by aa desc
这句里面客户的总数,不知道怎么统计??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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