问个问题

FrameSniper 2008-10-27 09:48:46
假设有表A和B
其中A中有字段A1,A2
B中有字段B1,B2

我现在要写一个语句

从A和B表中取字段内容A1,A2,B1,B2,但条件是A1等于‘a'且B1等于‘b'

怎么写?
...全文
168 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
wujumao 2008-10-27
  • 打赏
  • 举报
回复

select a.col1,a.col2...from tb1 a,tb2 b where a.col1='a'and b.col1='b'
xing020010 2008-10-27
  • 打赏
  • 举报
回复

create proc findcontract
@contractnum int=null,
@staffName nvarchar(50)=null
as
begin
select contractid,staffName,Num from @a a,@b b
where a.id=b.id
and (@contractnum is null or @contractnum=[合同编号])
and (@staffName is null or @staffName=[品名])
end

水族杰纶 2008-10-27
  • 打赏
  • 举报
回复
create proc P_test
@合同号 nvarchar(20),
@品名 nvarchar(50)
as
select a.*,b.* from ta a,tb b where a.A1=b.B2
and a.合同号=ISNULL(NULLIF(@合同号,''),a.合同号)
AND b.品名=ISNULL(NULLIF(@品名,''),b.品名)
等不到来世 2008-10-27
  • 打赏
  • 举报
回复
写掉2个字……
select a.*,b.* 
from ta a join tb b on a.编号=b.合同编号
where a.合同号=isnull(@合同号,a.合同号) and b.品名=isnull(@品名,b.品名)
等不到来世 2008-10-27
  • 打赏
  • 举报
回复

select a.*,b.*
from ta a join tb b on a.编号=b.编号
where a.合同号=isnull(@合同号,a.合同号) and b.品名=isnull(@品名,b.品名)

union用来合并2个结构完全相同的结果集,并去除重复记录。
ccq17 2008-10-27
  • 打赏
  • 举报
回复
select a1,a2,b1,b2 from a,b where a.a1=b.b2 and
a.a1='a' and b.b1='b'
FrameSniper 2008-10-27
  • 打赏
  • 举报
回复
比如表A数据如下

编号 合同号 签订日期
001 GXHT20081001 2008-10-01
002 GXHT20081002 2008-10-02
003 GXHT20081003 2008-10-03

表B数据如下

编号 合同编号 品名 数量
001 001 焦煤 3000
002 002 精煤 4000
003 003 中煤 5000

比如这两个表,A表表示合同基本内容,B表表示合同涉及货物内容

我现在在界面上放一个合同号combobox和一个品名combobox

然后让客户在里面选择具体内容来查询

点击查询按钮调用我的一个存储过程,存储过程里面的select语句最后根据用户选择的查询条件来获取对应记录

用户不一定所有的查询条件都选择,可能只选择合同编号而不选择品名,也可能只选择品名而不选择合同编号
Liyingyue_FFS 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 FrameSniper 的回复:]
忘记说一个条件了

A表的一个记录必然和B表的一个记录对应,也就是说A和B表中记录数量永远都是相同的

A表的字段A1和A2中A1和B表的B2字段对应,也就是说B表的B2字段是外键字段,指向A表的A1字段

但我现在是要根据A1和B1的内容来查询记录
[/Quote]

select * from ta a 
inner join tb b on a.a1=b.b2
where a.a1='a' and b.b1='b'
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 FrameSniper 的回复:]
忘记说一个条件了

A表的一个记录必然和B表的一个记录对应,也就是说A和B表中记录数量永远都是相同的

A表的字段A1和A2中A1和B表的B2字段对应,也就是说B表的B2字段是外键字段,指向A表的A1字段

但我现在是要根据A1和B1的内容来查询记录
[/Quote]

select a.*,b.* from ta a,tb b where a.A1=b.B2 a.a1='a' and b.b1='b'
水族杰纶 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 FrameSniper 的回复:]
使用union可以实现吗

我实际举个例子

假设A表示一个合同表,且每个合同涉及的货物内容放在B表中

A表字段分别为编号index,合同号contractnumber和日期subscribedate
B表字段分别为编号index,合同编号contractindex,涉及货物品名name与数量amount 其中合同编号contractindex指向A表的编号index

我现在想实现的就是根据用户的两个条件,一个合同编号,一个品名,把两个表里面的对应两条记录都取出来

我对…
[/Quote]
Union 連結結果集
你最好貼點數據,及你想要的結果
FrameSniper 2008-10-27
  • 打赏
  • 举报
回复
使用union可以实现吗

我实际举个例子

假设A表示一个合同表,且每个合同涉及的货物内容放在B表中

A表字段分别为编号index,合同号contractnumber和日期subscribedate
B表字段分别为编号index,合同编号contractindex,涉及货物品名name与数量amount 其中合同编号contractindex指向A表的编号index

我现在想实现的就是根据用户的两个条件,一个合同编号,一个品名,把两个表里面的对应两条记录都取出来

我对union不太明白,不知道使用union是否可以实现
super_iven 2008-10-27
  • 打赏
  • 举报
回复
select * from ta a inner join tb b on a.A1=b.B2 and a.A1='a' and b.B1='b'
这样?
chenhexi007 2008-10-27
  • 打赏
  • 举报
回复
select a1,a2,b1,b2 from A inner join B on a.a1=b.b2 where a.a1='a' AND b.b1='b'
水族杰纶 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 FrameSniper 的回复:]
忘记说一个条件了

A表的一个记录必然和B表的一个记录对应,也就是说A和B表中记录数量永远都是相同的

A表的字段A1和A2中A1和B表的B2字段对应,也就是说B表的B2字段是外键字段,指向A表的A1字段

但我现在是要根据A1和B1的内容来查询记录
[/Quote]
select a.*,b.* from ta a,tb b where a.A1=b.B2 a.a1='a' and b.b1='b'
PrewinZZZ 2008-10-27
  • 打赏
  • 举报
回复
占个座,等会儿看
chenhexi007 2008-10-27
  • 打赏
  • 举报
回复
select a1,a2,b1,b2 from a,b where a.a1='a' AND b.b1='b'
lanmengxjh 2008-10-27
  • 打赏
  • 举报
回复
select * from A where A1='a' union select * from B where B1='b'
FrameSniper 2008-10-27
  • 打赏
  • 举报
回复
忘记说一个条件了

A表的一个记录必然和B表的一个记录对应,也就是说A和B表中记录数量永远都是相同的

A表的字段A1和A2中A1和B表的B2字段对应,也就是说B表的B2字段是外键字段,指向A表的A1字段

但我现在是要根据A1和B1的内容来查询记录
xac17666 2008-10-27
  • 打赏
  • 举报
回复
select * from A,B where A1='a' and B1='b' 这样有问题吗?
fcuandy 2008-10-27
  • 打赏
  • 举报
回复
SELECT a.a1,a.a2,b.b1,b.b2 FROM a INNER JOIN b ON a.a1=b.b1
加载更多回复(7)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧