Sql 进行查询,在另一列中显示结果
我有一张这样的桌子:Sql 进行查询,在另一列中显示结果,sql,vb6,Sql,Vb6,我有一张这样的桌子: id - name - referred_id - referred_name 1 - mark - 100 - nick 2 - david- 100 - nick 3 - mat - 100 - nick 4 - patrik- 101 - robert 5 - mick - 101 - robert 我使用此查询显示引用名称的结果: SELECT member_id,f_na
id - name - referred_id - referred_name
1 - mark - 100 - nick
2 - david- 100 - nick
3 - mat - 100 - nick
4 - patrik- 101 - robert
5 - mick - 101 - robert
我使用此查询显示引用名称的结果:
SELECT member_id,f_name,l_name,active_status,refered_by From Act_Reg where refered_by='nick'
查询工作正常,返回:
id - name
1 - mark
2 - david
3 - mat
现在,我想在网格中以行和列的形式显示结果:如下所示
id - referred_id - referred_name - refers(name of refers)
1 - 100 - nick - mark , david , mat
2 - 101 - robert - patrik , mick
我的目标是,介绍as report的任何人,例如:
尼克介绍了马克、大卫和马特
我使用access作为数据库,感谢所有SQL Server的立场。(可能有一种更有效的方法,但方法是一样的)
在适用的情况下重命名表和别名。示例中的id列与所需结果不符
承蒙
由于您没有提到哪个RDBMS,我将为SQL Server提供解决方案:
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS Id,
referred_id,
referred_name,
STUFF((SELECT ', ' + CAST(name AS VARCHAR(10)) [n]
FROM TestTable
WHERE referred_id = t.referred_id
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') name
FROM TestTable t
GROUP BY referred_id, referred_name;
输出:
Id referred_id referred_name name
1 100 nick mark, david, mat
2 101 robert patrik, mick
工作演示:
更新:
如果您希望将结果发送给特定的参考用户,则需要在分组依据
之前添加WHERE
子句:
WHERE referred_name = 'nick'
访问答案。多亏了
SQL:
创建一个模块并粘贴到所提供链接中提到的相关方法中
我已经在access 2002-2003上进行了测试,可以正常工作。哪种RDBMS
SQL Server
,MySQL
或其他?基于示例数据,您有一些答案。我想知道尼克和罗伯特是否也有自己的身份证?例如,referedID是同一表中其他人的id?如果是这种情况,您可能会有其他答案I use access 2003这里有一个带有以下字段的表:id-name-referenced\u id-referenced\u nameSorry,您能将查询写入与access兼容的目录吗?谢谢Rob White,但我使用access 2003作为数据库,并使用vb6.vb6不识别“相关”,我该怎么办?有没有办法通过另一个查询来达到我的目标?我所研究的一切都表明,查询不是一个选项,但我并不是在网上阅读每一页,所以谁知道呢。我建议按原样提取数据,然后使用vb生成所需的结果。取决于数据的大小,它可能会很慢并且不可行,但这是由您自行决定的。
WHERE referred_name = 'nick'
SELECT
referred_id
,referred_name
,(
SELECT SUBSTRING((
SELECT
', ' + NAME
FROM Act_Reg
WHERE REFERRED_ID = A.REFERRED_ID
FOR XML PATH('')),
3,1000)
) [REFERS [NAME OF REFERES]
FROM Act_Reg A
-- INSERT WHERE CLAUSE HERE, IF NEEDED
GROUP BY referred_id, referred_name
SELECT distinct
i.[referred_name],
ConcatRelated(
"[name]",
"names",
"[referred_name] = '" & [referred_name] & "'") AS Names
FROM [names] AS i;