.............求一句SQL语句...............(50分)

  • 主题发起人 主题发起人 JasonLaw
  • 开始时间 开始时间
J

JasonLaw

Unregistered / Unconfirmed
GUEST, unregistred user!
表A:
FID 字段1
1 小说
1 故事
1 史实
2 幻想

表B
fID 字段2
1 未知1
1 未知4
2 未知2
3 未知3

我想得到:

FID 字段1 字段2
1 小说 未知1
1 故事 未知4
1 史实

可以说. 所以把 FID 为 1 的联在一起外没有其它什么关系.

我用:
SELECT DISTINCT A.字段1, B.字段2
FROM B, A
WHERE (((A.FID)=1) AND ((B.fID)=1));

得到:
字段1 字段2
故事 未知1
故事 未知4
史实 未知1
史实 未知4
小说 未知1
小说 未知4

不是我想的结果.
我用:
SELECT DISTINCT A.字段1, B.字段2
FROM B INNER JOIN A ON B.fID = A.FID
WHERE (((A.FID)=1) AND ((B.fID)=1));
得到的结果与上面一样.

请问要用什么语句才可以呢?

MSSQL 数据库
 
select a.fid,a.字段1,b.字段2 from A a ,B b where a.fid=b.fid and a.fid=1
 
你那数据之间啥关系?咋看两表和你要的结果也没关系啊
 
两个数据表之间除了 FID 有对应关系以外.没有其它任何关系.
 
其实就是简单的将 fID 为特定某一个值的 两个表的 字段(字段1 字段2 ) 连在一起.变成一个表就可以啦.
 
select a.fid,a.字段1,b.字段2 from A Left JOIN B ON A.fid=B.fid AND A.fid=1
 
/*
-- Author:Flystone
-- Version:V1.001 Date:2008-05-15 初稿
-- Version:V1.002 Date:2008-05-16 1、 处理空格带来的异常
-- 2、 增加了形如yyyy-mm-dd hh:mm:ss
-- yyyy-m-d h:m:s 格式的处理
*/

-- Test Data: ta
If object_id('ta') is not null
Drop table ta
Go
Create table ta(FID int,字段1 varchar(4))
Go
Insert into ta
select 1,'小说' union all
select 1,'故事' union all
select 1,'史实' union all
select 2,'幻想'
Go
-- Test Data: tb
If object_id('tb') is not null
Drop table tb
Go
Create table tb(fID int,字段2 varchar(5))
Go
Insert into tb
select 1,'未知1' union all
select 1,'未知4' union all
select 2,'未知2' union all
select 3,'未知3'
Go
--Start

Select *,px = identity(int,1,1) into #1
from ta where fid = 1

Select *,px = identity(int,1,1) into #2
from tb where fid = 1


select b.fid,b.字段1,c.字段2
from #1 b full join #2 c on b.px = c.px

--Result:
/*

fid 字段1 字段2
----------- ---- -----
1 小说 未知1
1 故事 未知4
1 史实 NULL

(所影响的行数为 3 行)


*/
drop table #1,#2
--End
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部