mysql如何查询某一时间段内没有卖出的商品_Mysql

前端时间,室友拿来一道关于mysql查询的问题:

有3张表:

1,zd_product 产品表 zp_id主键(产品id) inputtime(产品发布时间)

2,zd_order订单表 zp_id外键(产品id)zo_id主键(订单id) zo_voer_time( 订单完成时间)

3,zd_ord_pro产品订单表 zo_id外键(订单id)zp_id(产品id)

问:通过这3张表查找从产品发布到“一个月内““没有”被卖出过的产品?

在这里我也不说我们是如何讨论的了,直接上思路:

1,先查找在这一月内被卖出去的产品id,查找出来的数据:data(所查表zd_order)

2,通过第一步查找出来的数据继续查询zd_order表,不过要加个not in (data)

3,通过前两步,你已经查找出来没被卖出的产品id了,接下来你想查什么就查什么。

语句:

复制代码 代码如下:

select * from zd_product a1 left join zd_ord_pro a3 on a1.zp_id=a3.zp_id where a1.zp_id in (select zp_id from zd_order where a1.zp_id not in (select zp_id from zd_order a2 where a2.zo_voer_time>a1.inputtime and a2.zo_voer_time<a1.inputtime+30))

该语句未验证,如有错误,请自行修改。

提示:时间相加需转换为时间戳。

时间: 2024-09-23 08:34:21

mysql如何查询某一时间段内没有卖出的商品_Mysql的相关文章

大灾变发售当日24小时内共计卖出330万份

暴雪娱乐周一宣布,根据销售商给出的资料数据显示,<魔兽世界>第三部资料片<大灾变>在发售当日的24小时内共计卖出330万份(包含预售),使其成为史上销售最快的PC游戏. <大灾变>的发售成功打破了其前作<巫妖王之怒>2008年11月创下的发售当日24小时销售280万份的的记录.而2007年其首部资料片<燃烧的远征>发售当日共计售出了240万份. 新种族狼人出生地吉尔尼斯 <大灾变>中新增了众多新鲜元素,同时艾泽拉斯大陆的面貌将因堕落的

北京2377套新上市期房一周内只卖出一套

二套房贷."新十条"等楼市调控政策出台后,北京楼市期房和二手房的 成交量都明显受影响.北京市房地产交易管理网最新数据显示,4月19日以来,北京共有8个项目推出新的预售房,共2377套新房上市预售,截止到昨天,2377套新房仅成交一套,其余的2300多套房连一套预订的也没有. 2377套新上市期房一周内只卖出一套 昨天上午,记者跟随买房人邹先生来到位于海淀区北四环附近的藤花紫苑售楼处.按照北京市房地产交易管理网上显示的信息,该楼盘新核准上市预售的30套住房4月24日拿到预售许可证,并清楚

使用distinct在mysql中查询多条不重复记录值的解决办法_Mysql

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的.所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是

mysql如何查询两个日期之间最大的连续登录天数_Mysql

前言 最近工作中遇到一个需求,是根据用户连续记录天数来计算的,求出用户在一段时间内最大的连续记录时间,例如在 2016-01-01 和 2016-01-28 之间,如果用户在3号和4号都记录了,那么连续记录天数为2,如果用户在6号-10号每日都记录了,那么最大连续记录天数为5. 拿到这个需求的时候,说实话有点懵,第一想到的就是在代码中去统计,会用到循环,想到那么多个用户,并且时间跨度也有点大,比如15年到16年,两年时间,想想就有点恐怖. 解决方案 然后就把这个需求跟朋友说了,朋友也觉得有点难搞

MySQL联合查询语法内联、左联、右联、全联

MySQL联合查询效率较高,以下例子来说明联合查询(内联.左联.右联.全联)的好处: T1表结构(用户id,用户名,密码)    userid   username  password 1   jack jackpwd    2   owen   owenpwd    T2表结构(用户id,用户积分,用户等级)    userid(int)   jifen   dengji      1    20   3        3    50    6    第一:内联( inner join ) 如

oracle-Oracle查询一定时间段内每一段时间数据问题

问题描述 Oracle查询一定时间段内每一段时间数据问题 我有这样一张业务表,表结构如下 (ID) 住宿时间 押金金额 退宿时间 住宿费用 00000001 2009-09-21 50 2009-09-28 30 00000001 2009-09-25 50 2009-09-27 30 00000002 2009-09-25 80 2009-09-28 50 00000003 2009-09-28 90 2009-09-30 40 ........ .. .......... .. ......

问个高难度的复杂查询(在一个时间段内的间隔查询)_数据库其它

我想在一个时间段内然后按照间隔时间来查询数据 select * from 监控温度表 where 监控温度表.时间 between '" + Str(dtStart.Value) + "'AND '" + Str(dtEnd.Value) + "'order by id 这个是在一个时间段内查询,现在要加个时间间隔来查询,不知所云,望高手解答 其中dtStart.Value和dtEnd.Value是DTPicker1控件 举例:比如说我查询时间段在 2007-1-5

数据统计-请问如何实现下面的mysql分组查询(新学关系数据库感觉有点复杂所以求教)

问题描述 请问如何实现下面的mysql分组查询(新学关系数据库感觉有点复杂所以求教) 查找ip不为127.0.0.1的某个时间段内的数据(比如在2016-03-15 00:00:00至2016-03-15 23:59:59) 按照每5分钟一条分组(0-5,5-10一共288组数据) 再对每组数据按照uid去重 最后求得每一组的数量 解决方案 SELECT FLOOR(UNIX_TIMESTAMP(addTime) / (5 * 60)) time, COUNT(DISTINCT uid) FRO

整理MySql常用查询语句(23种)_MsSql

废话不多了,直接贴代码了 一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100;  查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 SELECT * FROM tb_stu WHERE sname = '小刘' SELECT * FROM tb_stu WHERE sname like '刘%' SELECT * FROM tb_stu WHERE sname like '%程序员' S