急!急!急!一个查询问题,谢谢!!!

meng0912 2011-05-25 11:02:33
一张数据表 r 记录抄表数据(可以理解为电表、水表),一张用户表 u 记录用户信息,r.uId = u.Id 。r表中有本次抄表thisR,上次抄表lastR,前次抄表preR等;u表中有Id,用户名称name等。
每个用户两个月抄一次(每个用户抄表时间不一样,比如5月份抄表的4月份没抄,4月份抄的6月份抄),现在的问题是:
查询出连续两次没有抄到表的用户。

好学若饥
谢谢!
...全文
133 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
meng0912 2011-06-07
  • 打赏
  • 举报
回复
非常感谢各位的热心帮助,谢谢!
祝:天天有个好心情!^=^
好学若饥
getmydream 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yejihui9527 的回复:]
select *
from r
where (thisR is null and lastR is null)
or (lastR is null and preR is null)
[/Quote]
这个查询语句还需要看楼主在没有抄表的情况下是否在表中产生记录,如果产生记录执行的结果应当是对的,如果不产生记录,就会漏掉本次及上次没有抄表的情况,楼主可以进一步考虑
meng0912 2011-05-31
  • 打赏
  • 举报
回复
这个查询也是错的,因为如果一个用户是3月份抄表的,2月份和4月份就不会抄表。我现在想把两个查询结合到一起再试试。
请高手帮忙解答。
谢谢!
meng0912 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yejihui9527 的回复:]
select *
from r
where (thisR is null and lastR is null)
or (lastR is null and preR is null)
[/Quote]
很感谢您的回复!这几天一直在出差,所以没有时间看。
您这个方法我试了查询的结果也不对,我们的系统是将两次抄表没有抄到的用户做个标记,之前有人用了一种方法,分别查询两次:
select *
FROM u
WHERE EXISTS (SELECT 'X'
FROM r
WHERE r.uId= u.Id
AND thisR IS NULL
AND dateR LIKE '201104%')
AND EXISTS (SELECT 'X'
FROM r
WHERE r.uId = u.Id
AND thisR IS NULL
AND dateR LIKE '201102%');

select *
FROM u
WHERE EXISTS (SELECT 'X'
FROM r
WHERE r.uId= u.Id
AND thisR IS NULL
AND dateR LIKE '201103%')
AND EXISTS (SELECT 'X'
FROM r
WHERE r.uId = u.Id
AND thisR IS NULL
AND dateR LIKE '201101%');
注:每个用户隔一个月抄一次表。因为现在是5月份,所以就在4月和2月或者3月和1月中查询没有抄到表的用户。最后分别将两次查询的用户设置标记。
meng0912 2011-05-25
  • 打赏
  • 举报
回复
不好意思,还需要哪些数据?
谢谢!
tangren 2011-05-25
  • 打赏
  • 举报
回复
描述和沟通存在问题。
meng0912 2011-05-25
  • 打赏
  • 举报
回复
抄表时间是“20110400”、“20110500”等。现在抄表时间是20110500,那就在20110400、20110300、20110200、20110100这四个月中查询没有抄表记录的用户。
meng0912 2011-05-25
  • 打赏
  • 举报
回复
不好意思,您是指什么数据?
谢谢!
sjq521521 2011-05-25
  • 打赏
  • 举报
回复
那就弄出点数据出来啊
meng0912 2011-05-25
  • 打赏
  • 举报
回复
结果我这里也没有,可以随便构造一些数据。刚才忘说了,r 表里还有一个抄表时间 dateR。

谢谢!
gelyon 2011-05-25
  • 打赏
  • 举报
回复
给点测试数据脚本,以及结果吧
yejihui9527 2011-05-25
  • 打赏
  • 举报
回复
select *
from r
where (thisR is null and lastR is null)
or (lastR is null and preR is null)
meng0912 2011-05-25
  • 打赏
  • 举报
回复
描述不是很清楚,实在不好意思。因为今天要出差,可能下午不能补充,晚上抽时间补充一下,谢谢了!
好学若饥!

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧