表一
id   area
-------------
1     广州
2     上海
3     北京表二
id      name 
-----------------
1       天山
2       环四路
3       中山六路
表三
id    area    name   pickno     pdate
-----------------------------------------
1      1        3    552123     2004-1-3
2      1        2    525222     2004-1-5
3      3        3    868555     2004-1-8
4      2        1    855312     2004-1-1
5      2        2    536333     2004-1-13查询:
查找表三中所有数据,条件是 pdate 大小 2004-1-2  而小于 2004-1-9 并且 area='广州'  name='中山六路' 这个查询语句怎样写?
查询结果应该是:id    area    name   pickno     pdate
-----------------------------------------
1     广州  中山六路 552123     2004-1-3

解决方案 »

  1.   

    select b.area,c.name,a.pickno,a.pdate from 表三 As a
    left join 表二 as b on b.name =a.name 
    left join 表一 as c on c.area=a.area
    where a.pdate>'2004-1-2' and a.pdate<'2004-1-9 ' 
    and b.area='广州' and  c.name='中山六路'
      

  2.   

    呵,错了,应该这样:select b.area,c.name,a.pickno,a.pdate from 表三 As a
    left join 表二 as b on b.id =a.name 
    left join 表一 as c on c.id=a.area
    where a.pdate>'2004-1-2' and a.pdate<'2004-1-9 ' 
    and b.area='广州' and  c.name='中山六路'
      

  3.   


    select c.id,
           a.area,
           b.name,
           c.picno,
           c.pdate
    from 表三 c join 表一 a on a.id=c.area 
                join 表二 b on b.id=c.name
    where a.area='广州' 
      and b.name='中山六路' 
      and c.pdate between '2004-1-2' and '2004-1-9'
      

  4.   

    太快了,还是差一点,抱歉!select c.area,b.name,a.pickno,a.pdate from 表三 As a
    left join 表二 as b on b.id =a.name 
    left join 表一 as c on c.id=a.area
    where a.pdate>'2004-1-2' and a.pdate<'2004-1-9 ' 
    and c.area='广州' and  b.name='中山六路'
      

  5.   

    select a.id,c.area,b.name,a.pickno,a.pdate from 表三 a,表二 b,表一 c
    where a.name=b.id and a.area=c.id
    and between a.to_date() and a.to_date()