select a.name from A a,B b where a.name=b.name
and to_char(a.date,'yyyymmdd') <= to_char(b.end_date,'yyyymmdd')
and to_char(a.date,'yyyy-mm-dd')='2010-11-15'
Orale 查询语句就像我上面写的一样 两张表的 name是相同的,不加最后一个 "and"语句能查到值,把所有的数据都查出来了。
但是加上最后一句查不到直,请教下应该如何改,才能保证有结果啊?
to_char(a.date,'yyyy-mm-dd')='2010-11-15' 这句必不可少
and to_char(a.date,'yyyymmdd') <= to_char(b.end_date,'yyyymmdd')
and to_char(a.date,'yyyy-mm-dd')='2010-11-15'
Orale 查询语句就像我上面写的一样 两张表的 name是相同的,不加最后一个 "and"语句能查到值,把所有的数据都查出来了。
但是加上最后一句查不到直,请教下应该如何改,才能保证有结果啊?
to_char(a.date,'yyyy-mm-dd')='2010-11-15' 这句必不可少
select a.name from A a,B b where a.name=b.name
and to_char(a.date,'yyyy-mm-dd') <= to_char(b.end_date,'yyyy-mm-dd')
and to_char(a.date,'yyyy-mm-dd')='2010-11-15'和
select a.name from A a,B b where a.name=b.name
and to_char(a.date,'yyyymmdd') <= to_char(b.end_date,'yyyymmdd')
and to_char(a.date,'yyyy-mm-dd')='2010-11-15'一样都是没结果
数据有啊select a.name from A a,B b where a.name=b.name
and to_char(a.date,'yyyy-mm-dd')='2010-11-15'
这样都能查出来 10多条数据呢
你这个SQL查不出来数据最大的可能是,你使用
select a.name from A a,B b where a.name=b.name
and to_char(a.date,'yyyy-mm-dd')='2010-11-15'查到的10多条数据都不满足“and to_char(a.date,'yyyymmdd') <= to_char(b.end_date,'yyyymmdd') ”这个条件,也就是A的日期都大于B的结束日期。
select a.name from A a,B b where a.name=b.name
and to_char(b.end_date,'yyyy-mm-dd') = > '2010-11-15'
你看看这个有数据不,
--坑爹阿,咋不行了?
with tab1 as (
select 'a' name, sysdate A_date from dual union all
select 'b', sysdate + 1 from dual union all
select 'c', sysdate + 2 from dual
),
tab2 as (
select 'a' name, sysdate B_date from dual union all
select 'b' , sysdate + 1 from dual union all
select 'c', sysdate from dual
)
--只用name关联,查询结果
select * from tab1, tab2 where tab1.name = tab2.name
------------------
a *********
b *********
c 省略行不行,还用写这些吗?--用name和日期两个条件查询结果
select * from tab1, tab2 where tab1.name = tab2.name and
to_char(tab1.A_date, 'yyyymmdd') = to_char(tab2.B_date, 'yyyymmdd')
---------------------
a ******
b 这个也省略行不行??阿?行不行--用三个条件查询
select * from tab1, tab2 where tab1.name = tab2.name and
to_char(tab1.A_date, 'yyyymmdd') = to_char(tab2.B_date, 'yyyymmdd')
and to_char(tab1.A_date, 'yyyy-mm-dd') = '2011-09-20'
--------------------
b *******(还是省略有木有)--ps:我擦,累死鸟!!全部都是一个一个字母敲上去的,真JB累阿!!!!
--楼主哥们,你再好好看看你的表吧!
select a.name from A as a
inner join B as b on b.name = a.name and b.end_date >= a.date
where to_char(a.date,'yyyy-mm-dd')= '2010-11-15'