求一SQL语句!(20分)

  • 主题发起人 主题发起人 sjm
  • 开始时间 开始时间
S

sjm

Unregistered / Unconfirmed
GUEST, unregistred user!
1. 使用的是Access数据库,不是SQL Server 2000。
2. 主表(表1)与子表(表2)均有一个ID字段来实现关联。主表的每条记录可能会有若干条对应的子表记录。子表除ID字段外还有A1和A2两个文本字段。
3. 如何用SelectSQL语句来实现查询结果:表1的ID字段 as 编号,表2的A1+A2 as 字符串。
注:A1+A2表示将表2的这两个文本字段内容相加。
 
select a.ID as 编号,b.A1+b.A2 as 字符串 from 表1 a,表2 b where a.ID=b.ID
 
怪我,没交代清楚。是想把子表对应上的每条记录的A1+A2都串起来,例如:主表某条记录对应子表的三条记录,则需要把子表的这三条记录的A1+A2都串加起来,且每个A1+A2之后跟一个分号用于间隔。
 
难道此问题无解吗?
 
SQL语句中无法将N条记录串加并加以分号,只有自己处理:
1.select a.ID as 编号,b.A1+b.A2 as 字符串 from 表1 a,表2 b where a.ID=b.ID
2.手工处理,把相同的N条记录合成一条一记录
[:D]
 
加起来后的结果存到哪里?
表1还是表2,的哪个字段,还是查出这个结果就行。
 
to yunxi126:
查出来就行,结果将显示在一DBGridEh中。
 
select a.ID as 编号,b.A1+b.A2 as 字符串结果 from 表1 a,表2 b where a.ID=b.ID
 
谁能给个正确答案?
 
select嵌游标取表2的A1,A2
取一行加一行,
 
DECLARE
@EventDates VARCHAR(1024)
SET @EventDates = ''

SELECT @EventDates = @EventDates + CONVERT(VARCHAR(15), a.d,107 ) + '; '
FROM (Select DateBegin as [d] FROM Event
JOIN Tour
ON Event.TourID = Tour.TourID
WHERE Tour.[Name] = 'Outer Banks Lighthouses') as a

SELECT Left(@EventDates, Len(@EventDates)-1) AS 'Outer Banks Lighthouses Events'

这是SQL2000宝典里的一个例子,楼主修改一下,就可以达到要求了
 
具体如何实现呢?
 
declare @str varchar(2000)
set @str=''
select id,(select @str=@str+a1+a2+';' from my2 where my2.id=my1.id) as 字符和 from my1a1+a2 from 表2 where 表2.id=表1.id) from 表1
大概思路.但是报错了.我没时间想了.自己搞定.
 
后退
顶部