如何通过TableAdapter的SQL SELECT在DataGridView中聚合显示关联表字段?
实现关联表列值的合并显示(通过TableAdapter的SQL语句)
可以通过TableAdapter的SQL SELECT语句实现这个需求,不同数据库有对应的字符串聚合函数,直接在查询中关联两张表并聚合B表的C列值即可。以下是主流数据库的实现示例:
SQL Server 示例
SELECT A.*, 'B_"'+STRING_AGG(B.C, '; ')+'"' AS B_Combined FROM A LEFT JOIN B ON A.主键列 = B.A表关联主键列 GROUP BY A.主键列, A.A_Row1Col1Value, A.A_Row1Col2Value
MySQL 示例
SELECT A.*, CONCAT('B_"', GROUP_CONCAT(B.C SEPARATOR '; '), '"') AS B_Combined FROM A LEFT JOIN B ON A.主键列 = B.A表关联主键列 GROUP BY A.主键列, A.A_Row1Col1Value, A.A_Row1Col2Value
Oracle 示例
SELECT A.*, 'B_'||'"'||LISTAGG(B.C, '; ') WITHIN GROUP (ORDER BY B.C)||'"' AS B_Combined FROM A LEFT JOIN B ON A.主键列 = B.A表关联主键列 GROUP BY A.主键列, A.A_Row1Col1Value, A.A_Row1Col2Value
注意事项
- 必须将A表的主键以及所有需要显示的非聚合列都加入
GROUP BY子句,否则会触发分组错误 - 使用
LEFT JOIN而非INNER JOIN,确保A表中无关联B表数据的行也能正常显示(此时合并列会显示B_""或NULL,可根据需求调整) - 分隔符可自由替换,只需修改聚合函数中的分隔符参数(比如把
'; '改成,)
内容的提问来源于stack exchange,提问作者UHM
相关产品推荐
相关产品推荐

