1个回答
展开全部
看你的sql语句,应该是有问题的,用inner join和不用他,直接多表关联没有区别,反到时用他时,一旦关联表多了,逻辑关系容易产生错乱,你这个sql就有问题了。
首先来分析一下,看写的条件,是one表和two表有关联,two表和three表有关联,但是按照你的inner join写的话,是one表和two表有关联,同时one表和three表有关联了。重新修改一下
select one.one,two.tow,three.three from one,two,three where one.one_id=two.one_id and two.two_id=three.two_id
不管你最终要的结果是什么,逻辑关系先确定,然后咱们再来说说你想要的去重。从你的数据来看,one表是卖的商品的第一大类,比如床上用品,洗漱用品,two是中间的分类,比如枕头被罩洗发水牙膏,three是最终的产品,大被罩,华牙膏等等。那么你要的分组,one中不重复,two中不重复,three全显示,就无法实战,除非每一个one类下只有一个two分类,并且每一个two分类下只有一个three产品,这样直接用上面的dql语句查就出来结果了。
实际来说,分析一下,应该是老板要一个统计表格,前面的分类只显示一遍,不能重复,后面的具体产品,挨个显示,并且显示数量。
select one.one,two.tow,three.three,count(three.three_id)from one,two,three where one.one_id=two.one_id and two.two_id=three.two_id group by three.three_id
首先来分析一下,看写的条件,是one表和two表有关联,two表和three表有关联,但是按照你的inner join写的话,是one表和two表有关联,同时one表和three表有关联了。重新修改一下
select one.one,two.tow,three.three from one,two,three where one.one_id=two.one_id and two.two_id=three.two_id
不管你最终要的结果是什么,逻辑关系先确定,然后咱们再来说说你想要的去重。从你的数据来看,one表是卖的商品的第一大类,比如床上用品,洗漱用品,two是中间的分类,比如枕头被罩洗发水牙膏,three是最终的产品,大被罩,华牙膏等等。那么你要的分组,one中不重复,two中不重复,three全显示,就无法实战,除非每一个one类下只有一个two分类,并且每一个two分类下只有一个three产品,这样直接用上面的dql语句查就出来结果了。
实际来说,分析一下,应该是老板要一个统计表格,前面的分类只显示一遍,不能重复,后面的具体产品,挨个显示,并且显示数量。
select one.one,two.tow,three.three,count(three.three_id)from one,two,three where one.one_id=two.one_id and two.two_id=three.two_id group by three.three_id
追答
没有写完呢,不小心碰到提交按钮了。最后说一句。sql返回的结果,one和two肯定是重复的,需要在你的后台程序代码或者前台页面显示代码或者导出excel代码中,处理去重或者合并单元格
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |