有两个表TableA和TableB结构和内容如下:
TableA:
[NO]  [MANAGER] [PAYEE] [USER]
001   张三      李四     王五
002   赵六      李四     王五
003   赵六      李四     王五
004   张三      李四     王五TableB:
[NO]  [PRODUCT]  [PRICE]  [NUM]
001   电脑       3000      1
001   光盘       20        5
002   电脑       100       6
002   内存       200       5
003   网线       3000      1
003   光盘       20        5
004   鼠标       100       6
004   内存       200       5TableA相当一个单号和记录人的记录集,TableB记录每个单号对应的产品名和数量等,现在想通过一条查询语句得到,TableA中的[MANAGER] = "赵六" ,并且对应的单号在TableB中[PRODUCT]="电脑" 的TableA记录得到的结果应该是
002   赵六      李四     王五这个查询语句怎么写?请高手帮忙!!!

解决方案 »

  1.   

    select m.* from TableA m , TableB n where m.no = n.no and m.MANAGER = '赵六' and n.PRODUCT='电脑'
      

  2.   

    ---测试数据---
    if object_id('[TableA]') is not null drop table [TableA]
    go
    create table [TableA]([NO] varchar(3),[MANAGER] varchar(4),[PAYEE] varchar(4),[USER] varchar(4))
    insert [TableA]
    select '001','张三','李四','王五' union all
    select '002','赵六','李四','王五' union all
    select '003','赵六','李四','王五' union all
    select '004','张三','李四','王五'
    if object_id('[TableB]') is not null drop table [TableB]
    go
    create table [TableB]([NO] varchar(3),[PRODUCT] varchar(4),[PRICE] int,[NUM] int)
    insert [TableB]
    select '001','电脑',3000,1 union all
    select '001','光盘',20,5 union all
    select '002','电脑',100,6 union all
    select '002','内存',200,5 union all
    select '003','网线',3000,1 union all
    select '003','光盘',20,5 union all
    select '004','鼠标',100,6 union all
    select '004','内存',200,5
     
    ---查询---
    select a.*
    from tablea a
    join tableb b on a.[no]=b.[no]
    where a.[MANAGER]='赵六'
    and b.[PRODUCT]='电脑'---结果---
    NO   MANAGER PAYEE USER
    ---- ------- ----- ----
    002  赵六      李四    王五(1 行受影响)
      

  3.   

    create table TableA([NO] varchar(10),[MANAGER] varchar(10),[PAYEE] varchar(10),[USER] varchar(10))
    insert into TableA values('001', '张三', '李四', '王五')
    insert into TableA values('002', '赵六', '李四', '王五')
    insert into TableA values('003', '赵六', '李四', '王五')
    insert into TableA values('004', '张三', '李四', '王五')create table TableB([NO] varchar(10),[PRODUCT] varchar(10),[PRICE] int, [NUM] int)
    insert into TableB values('001', '电脑', 3000 ,1)
    insert into TableB values('001', '光盘', 20   ,5)
    insert into TableB values('002', '电脑', 100  ,6)
    insert into TableB values('002', '内存', 200  ,5)
    insert into TableB values('003', '网线', 3000 ,1)
    insert into TableB values('003', '光盘', 20   ,5)
    insert into TableB values('004', '鼠标', 100  ,6)
    insert into TableB values('004', '内存', 200  ,5)
    go
    --方法1
    select m.* from TableA m , TableB n where m.no = n.no and m.MANAGER = '赵六' and n.PRODUCT='电脑'
    /*
    NO         MANAGER    PAYEE      USER       
    ---------- ---------- ---------- ---------- 
    002        赵六         李四         王五(所影响的行数为 1 行)
    */--方法2
    select m.* from TableA m inner join TableB n on m.no = n.no and m.MANAGER = '赵六' and n.PRODUCT='电脑'
    /*
    NO         MANAGER    PAYEE      USER       
    ---------- ---------- ---------- ---------- 
    002        赵六         李四         王五(所影响的行数为 1 行)
    */--方法3
    select m.* from TableA m inner join TableB n on m.no = n.no where m.MANAGER = '赵六' and n.PRODUCT='电脑'
    /*
    NO         MANAGER    PAYEE      USER       
    ---------- ---------- ---------- ---------- 
    002        赵六         李四         王五(所影响的行数为 1 行)
    */drop table TableA , TableB
      

  4.   

    select * from TableA where TableA.MANAGER=赵六 and TableA.NO=TableB.NO and TableB.PRODUCT=电脑