求助,急,mysql left 嵌套查询

muyang 发布于 2012/07/02 13:57
阅读 298
收藏 0

select a.*, d.sell_count 

from 

 borough as a 

 left join ( select da.* from ( select count(db.id) as sell_count,db.borough_id from housesell as db where db.borough_id = a.id ) as da ) as d 

where 

 a.is_checked = 1

 order by id desc

 LIMIT 0, 10

 

这个多表查询里,不光只有这两个表,还有其他的left join。。所以这里简写了两个

请问,left join 里面的
where db.borough_id = a.id 这一句会报错。请问大家有什么方式来实现嘛。

加载中
0
m
muyang
问题已解: SELECT a.*, COUNT(db.id) AS sell_count FROM borough AS a LEFT JOIN housesell AS db ON( db.borough_id = a.id) WHERE a.is_checked = 1 GROUP BY a.id ORDER BY id DESC LIMIT 0, 10
0
m
muyang
是不是嵌套查询里面不能带where条件的?
0
飞晏
飞晏

你最后连接查询的两个表是a和d,怎么能db.borough_id = a.id呢?

也就是最里层的嵌套查询是会产生一个临时表的,改进你的查询或者把有些逻辑放到程序里面处理吧。

0
小荷听雨
left join 表名   on 。。还有,  where db.borough_id = a.id的时候,你的临时表a还没有建立,要么  ( select count(db.id) as sell_count,db.borough_id from housesell as db, borough    where db.borough_id =  borough  .id )
m
muyang
把 borough 带进left join的字查询里面,好像得出的最终结果 sell_count 不正确。。
0
m
muyang
看来只能把它放在程序里面处理了。
0
m
muyang

问题已解:

 

 
 
SELECT a. * , COUNT (db.id) AS sell_count FROM borough AS a LEFT JOIN housesell AS db ON ( db.borough_id = a.id) WHERE a.is_checked = 1 GROUP BY a.id ORDER BY id DESC LIMIT 0 , 10

返回顶部
顶部