根据一个表中字段查询多个表的字段

glys2050 2009-08-03 04:46:23
我现在有个表a,要根据表a中的“流水号”字段查询其他四个表b,c,d,e中的“原因”字段,这四个表中的“流水号”字段只是表a中的部分字段,我想实现把表a中的所有数据以及另外表中的“原因”字段在一起读取出来,如果另外四个表中查不到对应流水号,则在相应的表a中的数据行中显示为空。另外,另四个表中可能会有多条相同数据,也希望能按照表a的对应流水号显示在一条里。请教一下这样的SQL语句应该怎么写。我用的是JSP。拜托大家多帮忙了,谢谢!
...全文
187 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
glys2050 2009-08-03
  • 打赏
  • 举报
回复
不合并也可以,只要显示在一个表格里对应上就可以了,不知道行不行,呵呵。
glys2050 2009-08-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 guguda2008 的回复:]
另外,另四个表中可能会有多条相同数据,也希望能按照表a的对应流水号显示在一条里
没有这句就好写了
[/Quote]
因为那几个表中是一个问卷中的多选项分条存的,所以读取出来的时候应该也是这样合理些吧
guguda2008 2009-08-03
  • 打赏
  • 举报
回复
另外,另四个表中可能会有多条相同数据,也希望能按照表a的对应流水号显示在一条里
没有这句就好写了
SQL77 2009-08-03
  • 打赏
  • 举报
回复
SQL code问题描述:
无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数,
所以,当我们在处理下列要求时,会比较麻烦:
有表tb, 如下:
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即, group by id, 求 value 的和(字符串相加)

1. 旧的解决方法

-- 1. 创建处理函数
CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + value
FROM tb
WHERE id=@id
RETURN STUFF(@r, 1, 1, '')
END
GO
-- 调用函数

SELECt id, values=dbo.f_str(id)
FROM tb
GROUP BY id
SQL77 2009-08-03
  • 打赏
  • 举报
回复
SELECT 
A.流水号,B.原因,C.原因,D.原因,E.原因
FROM
A
LEFT JOIN B ON CHARINDEX(B.流水号 ,A.流水号)>0
LEFT JOIN C ON CHARINDEX(C.流水号 ,A.流水号)>0
LEFT JOIN D ON CHARINDEX(D.流水号 ,A.流水号)>0
LEFT JOIN E ON CHARINDEX(E.流水号 ,A.流水号)>0
这样试试,这只是其中一步,还有合并的
glys2050 2009-08-03
  • 打赏
  • 举报
回复
我这用左连接的话总显示语法错误(操作符丢失),不知道什么问题
soft_wsx 2009-08-03
  • 打赏
  • 举报
回复
头晕了,顶个先
SQL77 2009-08-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sql77 的回复:]
SQL codeSELECT
A.流水号,B.原因,C.原因,D.原因,E.原因FROM
ALEFTJOIN BON B.流水号LIKE'%A.流水号%'LEFTJOIN CON D.流水号LIKE'%A.流水号%'LEFTJOIN DON D.流水号LIKE'%A.流水号%'LEFTJOIN EON E.流水号LIKE'%A.流水号%'??
[/Quote]
不能用LIKE了,
改CHARINDEX();
晕,还得合并!!!
SQL77 2009-08-03
  • 打赏
  • 举报
回复
SELECT 
A.流水号,B.原因,C.原因,D.原因,E.原因
FROM
A
LEFT JOIN B ON B.流水号 LIKE '%A.流水号%'
LEFT JOIN C ON D.流水号 LIKE '%A.流水号%'
LEFT JOIN D ON D.流水号 LIKE '%A.流水号%'
LEFT JOIN E ON E.流水号 LIKE '%A.流水号%'
??
--小F-- 2009-08-03
  • 打赏
  • 举报
回复
跟着学习
htl258_Tony 2009-08-03
  • 打赏
  • 举报
回复
没有数据,只能帮顶.
Yang_ 2009-08-03
  • 打赏
  • 举报
回复
cross apply

小梁呢,快点写

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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