select m.* from 产品批发 m , 限权控制表 n 
where ((m.销售地区 = n.地区 and n.地区 <> 'all') or n.地区 = 'all') and m.产品型号 = n.产品型号 and n.用户ID = '张三')

解决方案 »

  1.   


    select a.批发价 from 产品批发 a 
        join 权限控制表 b on a.产品型号=b.产品型号 and a.地区=b.地区
         where 用户ID=''
      

  2.   

    create table tb1(用户ID varchar(10),地区 varchar(10),产品型号 varchar(10))
    insert into tb1 values('张三', 'ALL',  'Moto')
    insert into tb1 values('张三', '广东', 'ALL')
    insert into tb1 values('张三', '广西', 'Sony')
    insert into tb1 values('李四', '广东', 'Moto')
    insert into tb1 values('李四', '广东', 'Nokia')
    create table tb2(产品型号 varchar(10),销售地区 varchar(10),批发价 int)
    insert into tb2 values('Moto'    , '广东',      1000 )
    insert into tb2 values('Moto'    , '北京',      1010 )
    insert into tb2 values('Sony'    , '广东',      1200 )
    insert into tb2 values('Sony'    , '广西',      1210 )
    insert into tb2 values('Nokaia'  , '广西',      1500 )
    goselect distinct m.* from tb2 m , tb1 n 
    where (
            ((m.销售地区 = n.地区 and n.地区 <> 'all') or (n.地区 = 'all')) and 
            ((m.产品型号 = n.产品型号 and n.产品型号 <> 'all') or (n.产品型号 = 'all')) and 
            n.用户ID = '张三'
          )drop table tb1 , tb2/*
    产品型号       销售地区       批发价         
    ---------- ---------- ----------- 
    Moto       北京         1010
    Moto       广东         1000
    Sony       广东         1200
    Sony       广西         1210(所影响的行数为 4 行)
    */
      

  3.   

    create table tb1(用户ID varchar(10),地区 varchar(10),产品型号 varchar(10))
    insert into tb1 values('张三', 'ALL',  'Moto')
    insert into tb1 values('张三', '广东', 'ALL')
    insert into tb1 values('张三', '广西', 'Sony')
    insert into tb1 values('李四', '广东', 'Moto')
    insert into tb1 values('李四', '广东', 'Nokia')
    create table tb2(产品型号 varchar(10),销售地区 varchar(10),批发价 int)
    insert into tb2 values('Moto'    , '广东',      1000 )
    insert into tb2 values('Moto'    , '北京',      1010 )
    insert into tb2 values('Sony'    , '广东',      1200 )
    insert into tb2 values('Sony'    , '广西',      1210 )
    insert into tb2 values('Nokaia'  , '广西',      1500 )
    go--张三的
    select distinct m.* from tb2 m , tb1 n 
    where (
            ((m.销售地区 = n.地区 and n.地区 <> 'all') or (n.地区 = 'all')) and 
            ((m.产品型号 = n.产品型号 and n.产品型号 <> 'all') or (n.产品型号 = 'all')) and 
            n.用户ID = '张三'
          )/*
    产品型号       销售地区       批发价         
    ---------- ---------- ----------- 
    Moto       北京         1010
    Moto       广东         1000
    Sony       广东         1200
    Sony       广西         1210(所影响的行数为 4 行)
    */--李四的。
    select distinct m.* from tb2 m , tb1 n 
    where (
            ((m.销售地区 = n.地区 and n.地区 <> 'all') or (n.地区 = 'all')) and 
            ((m.产品型号 = n.产品型号 and n.产品型号 <> 'all') or (n.产品型号 = 'all')) and 
            n.用户ID = '李四'
          )
    /*
    产品型号       销售地区       批发价         
    ---------- ---------- ----------- 
    Moto       广东         1000(所影响的行数为 1 行)
    */drop table tb1 , tb2