select t1.*,count(t1.productId) buyNum from
(select a.productId,a.name,b.city,c.endCity
from bc_product a --产品
inner join bc_tra b on b.traId=a.traId --旅行社
inner join bc_line c on a.productId=c.productId --旅行线路
where a.status=1 and b.status=1) t1
left outer join bc_order t2 on ( t1.productId=t2.productId and t2.status in(2,3) )
group by t1.productId
order by buyNum desc
limit 0,10
在mysql里,查找3个表的一点新信息,按销售量排序
主管说效率低,他要求不用联表,各位可有好方法?
他说 “我不倾向于联表,所有联表都是有问题的”,要求不用联表解决
select productId,count(productId) buyNum from bc_product a where exists (select 1 from bc_tra b where b.traId=a.traId and b.status=1) and exists (select 1 from bc_line c where a.productId=c.productId) and exists (select 1 from bc_order d where a.productId=d.productId and d.status in(2,3) ) and a.status=1 group by a.productId order by buyNum desc limit 0,10
可以不?
4個表的信息都要,不联表怎么查?让他写写看,要么这样
select t1.*,count(t1.productId) buyNum from
(select a.productId,a.name,b.city,c.endCity
from bc_product a --产品
inner join bc_tra b on b.traId=a.traId --旅行社
inner join bc_line c on a.productId=c.productId --旅行线路
where a.status=1 and b.status=1
and a.productId in(select productId from bc_order where status in(2,3) )
) t1
group by t1.productId
order by buyNum desc
limit 0,10
他意思是不是不要有子查询?
让领导把话说清楚
让领导写吧,万能的领导
不用join连接的话,就用子查询了
你的t2有什么用?我感觉没用上啊。莫非你要用这种方式,增加t1的数量?
t2用来统计销售量,有的产品没销售量就插null
count(t1.productId)也可写成 count(t2.productId),反正统计group by productId 的个数,我觉得用主键好