基础查询语句咨询

rain9715 2011-05-11 04:53:07
现在我的oracle有2个数据表,一个A表,B表,

A表:工号,日期 如:001,2011-03-15;001,2011-03-15;002,2011-04-04 总共有45条数据
B表:工号,注册日期 如:001,2011-5-3 18:02:29;001,2011-5-3 18:03:29 总共有3000多条数据


select t.ge_id,t.create_date,t1.empid,t1.date
from A t, B t1
where t.ge_empid(+) = t1.empid
and to_char(t.create_date, 'YYYY-MM-DD')=t1.date

不知为什么,这样查询出来有68条数据,
我想要的是准确得查询出A表里有的45条数据,且带着B表的相关信息,

请问应该怎么写?
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xrzs1986 2011-07-03
  • 打赏
  • 举报
回复
tang 哥,问下这里的字段后面有(+)是啥意思?
[Quote=引用楼主 rain9715 的回复:]
t.create_date(+), 'YYYY-MM-DD'[/Quote]
whlizi 2011-05-13
  • 打赏
  • 举报
回复
应该是b表中有重复数据

select t.ge_id,t.create_date,t1.empid,t1.date
from A t, (SELECT DISTINCT empid, DATE FROM B) t1
where t.ge_empid = t1.empid(+)
and to_char(t.create_date, 'YYYY-MM-DD')=t1.date(+)
小青蛙 2011-05-11
  • 打赏
  • 举报
回复
好抱歉, 不明白什么意思
tangren 2011-05-11
  • 打赏
  • 举报
回复
这两个表是什么关系?一对多?两表的主键分别是?
特别是两表的关联字段是什么意思?
rain9715 2011-05-11
  • 打赏
  • 举报
回复
之前 and to_char(t.create_date(+), 'YYYY-MM-DD')=t1.date 也试过,但出来的记录条数是77条,还是不是45条
tangren 2011-05-11
  • 打赏
  • 举报
回复
--试试
select t.ge_id,t.create_date,t1.empid,t1.date
from A t, B t1
where t.ge_empid(+) = t1.empid
and to_char(t.create_date(+), 'YYYY-MM-DD')=t1.date
--或者
select t.ge_id,t.create_date,t1.empid,t1.date
from A t right join B t1 on (t.ge_empid = t1.empid
and to_char(t.create_date, 'YYYY-MM-DD')=t1.date)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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