有两个表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 赵六 李四 王五这个查询语句怎么写?请高手帮忙!!!
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 赵六 李四 王五这个查询语句怎么写?请高手帮忙!!!
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 行受影响)
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