sql left join 连用问题,计算总算 并排序
SELECTt1.*,count(t2.*)ASnum,t3*FROM`test1`ASt1LEFTJOIN`test2`ASt2t1.tid=t2.tidLEFTJOI...
SELECT t1.*, count(t2.*) AS num, t3* FROM `test1` AS t1 LEFT JOIN `test2` AS t2 t1.tid = t2.tid LEFT JOIN `test3` AS t3 ON t3.tid = t1.tid WHERE 其他条件 ORDER BY num DESC
表的内容
test1
tid name ......
1 rrrr
2 zzzz
3 cccc
4 xxxx
5 oooo
test2
id tid name......
1 3 lassd
2 4 aaaaa
3 3 mmmmm
4 3 ddddd
5 1 kkkkk
6 3 ppppp
test3
不太重要就省略
我的目的,想查询出 test2表里面t2.tid = t1.tid,即列出 tid=3时有三条记录;4为一条;1为一条;2为0条。
并按照num排序 以上的写法还是有问题的。
我的是mysql数据库
SELECT t1.*, count(t2.*) AS num, t3* FROM `test1` AS t1 LEFT JOIN `test2` AS t2 ON t1.tid = t2.tid LEFT JOIN `test3` AS t3 ON t3.tid = t1.tid WHERE 其他条件 ORDER BY num DESC 展开
表的内容
test1
tid name ......
1 rrrr
2 zzzz
3 cccc
4 xxxx
5 oooo
test2
id tid name......
1 3 lassd
2 4 aaaaa
3 3 mmmmm
4 3 ddddd
5 1 kkkkk
6 3 ppppp
test3
不太重要就省略
我的目的,想查询出 test2表里面t2.tid = t1.tid,即列出 tid=3时有三条记录;4为一条;1为一条;2为0条。
并按照num排序 以上的写法还是有问题的。
我的是mysql数据库
SELECT t1.*, count(t2.*) AS num, t3* FROM `test1` AS t1 LEFT JOIN `test2` AS t2 ON t1.tid = t2.tid LEFT JOIN `test3` AS t3 ON t3.tid = t1.tid WHERE 其他条件 ORDER BY num DESC 展开
3个回答
展开全部
select A.* ,B.* from test2 as A left join test1 as B on A.tid=B.tid
你后面的Num我不知道是在那里的,估计是你test3表的吧。你再left join test3 as C on A.X=C.X order by C.num
差不多是这样。
你后面的Num我不知道是在那里的,估计是你test3表的吧。你再left join test3 as C on A.X=C.X order by C.num
差不多是这样。
追问
num很明显啊 是count(t2.*) AS num 是这的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Try this:
SELECT t1.tid, t1.name, count(t2.id) AS num
FROM test1 t1 LEFT JOIN test2 t2
ON t2.tid = t1.id
GROUP BY t1.tid, t1.name
ORDER BY count(t2.id) DESC
SELECT t1.tid, t1.name, count(t2.id) AS num
FROM test1 t1 LEFT JOIN test2 t2
ON t2.tid = t1.id
GROUP BY t1.tid, t1.name
ORDER BY count(t2.id) DESC
更多追问追答
追问
你好 test3是不能舍弃掉得 而且你的这个方法和我没有什么区别吧
追答
你的没有group by肯定出错
test不知道你要干嘛
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询