Sql 在数据集中的一个字段中从DB中选择更多值
我需要从数据库中选择更多的值,并将其放入数据集中的一个字段中 我在delphi中有一个方法,它有输入参数TDataSet,并将数据集中的值导出到Excel 我要导出的字段之一是多个值,这些值用“,”从其他表中分隔 我有以下表格: KATALOGSql 在数据集中的一个字段中从DB中选择更多值,sql,sql-server,tsql,delphi,adodb,Sql,Sql Server,Tsql,Delphi,Adodb,我需要从数据库中选择更多的值,并将其放入数据集中的一个字段中 我在delphi中有一个方法,它有输入参数TDataSet,并将数据集中的值导出到Excel 我要导出的字段之一是多个值,这些值用“,”从其他表中分隔 我有以下表格: KATALOG ID_Katalog | atribut_1 ---------------------- 1 | xxx KATALOGxPOLOZKA ID_POLOZKA | ID_KATALOG -----------------------
ID_Katalog | atribut_1
----------------------
1 | xxx
KATALOGxPOLOZKA
ID_POLOZKA | ID_KATALOG
-----------------------
1 | 1
2 | 1
3 | 1
我需要这个结果:
ID_Katalog | atribut_1 | polozka
--------------------------------
1 | xxx | 1, 2, 3
有什么可能的办法吗?我怎么做
我尝试了子查询,但子查询不能返回超过1个值
备注:Im使用-Delphi XE6、ADODB、MS SQL-SERVER。。。。结果必须是TDataSet您可以在子选择中使用
FOR XML
子句进行连接,如下所示:
SELECT
K.ID_Katalog,
K.attribut_1,
STUFF
(
(
SELECT
', ' + CAST(P.ID_POLOZKA AS varchar)
FROM
KATALOGxPOLOZKA P
WHERE
P.ID_KATALOG = K.ID_Katalog
FOR XML PATH('')
), 1, 2, ''
) AS polozka
FROM
KATALOG K;
您可以在子选择中使用
FOR XML
子句进行如下连接:
SELECT
K.ID_Katalog,
K.attribut_1,
STUFF
(
(
SELECT
', ' + CAST(P.ID_POLOZKA AS varchar)
FROM
KATALOGxPOLOZKA P
WHERE
P.ID_KATALOG = K.ID_Katalog
FOR XML PATH('')
), 1, 2, ''
) AS polozka
FROM
KATALOG K;
smth类似:
recs:=sqlExecute(join the tables)
while not recs.eof() do
begin
s:=recs.fields['join field from master table')
dataset.append, and init other fields
while (not recs.eof()) and s=recs.fields['join field from master table') do
begin
dataset.fields['concat field']:=dataset.fields['concat field'] + recs.field['polozka'] + ', ';
recs.next;
end;
cut trailing comma
dataset.post;
end;
smth类似:
recs:=sqlExecute(join the tables)
while not recs.eof() do
begin
s:=recs.fields['join field from master table')
dataset.append, and init other fields
while (not recs.eof()) and s=recs.fields['join field from master table') do
begin
dataset.fields['concat field']:=dataset.fields['concat field'] + recs.field['polozka'] + ', ';
recs.next;
end;
cut trailing comma
dataset.post;
end;
哪个查询有这个结果?如何在一个字段中选择更多以“,”分隔的值?请参考此问题,谢谢您的参考。。。我以前没有发现这个问题哪个查询有这个结果?如何在一个字段中选择更多以“,”分隔的值?请参考此问题,谢谢您的参考。。。我以前没有发现这个问题,它叫做伪代码。。给出一般结构,让提问者找出确切的句法,所以你必须提到这一点。否则它会让人困惑,为什么要在这里使用while?外部while用于处理所有记录,内部while用于将同一主机的详细记录保存在一起。无需我们可以使用COALESCE或xml path()方法,它被称为伪代码。。给出一般结构,让提问者找出确切的句法,所以你必须提到这一点。否则它会让人困惑,为什么要在这里使用while?外部while用于处理所有记录,内部while用于将同一主机的详细记录保存在一起。无需我们可以使用COALESCE或xml path()方法