我需要一个sql查询来获取基于多个表的记录。如下 -
有Table_A,Table_B&表格。 Table_C。 Table_A是我想要获取数据的主表。 Table_B依赖于Table_A,包含Table_A的外键。
Table_A(父表)----> Table_B(子表)
Table_C包含表Table_B的外键。
Table_B(父表)----> Table_C(子表)
所以现在我需要Table_A中的数据和Table_C的一列。但是该列将根据Table_A的主键值包含逗号单独的字符串。
答案 0 :(得分:0)
所以现在我需要Table_A中的数据和Table_C的一列。 但是该列将包含逗号分隔的字符串 表_A&#39的主键值。
这是解决抽象问题的错误方法。如果您希望表C中的多个项目与表A相关联(并且基于表B上面的注释无效),那么您应该执行以下操作:
创建一个名为CjoinA的表,其中有一个ID_C和一个ID_A一列然后将有多行用于关系,因此,如果表C行ID 1与表A的行ID为1,2和3,那么您会有这样的三行
ID_C ID_A
1 1
1 2
1 3
答案 1 :(得分:0)
一种可能的方法是创建一个汇总table_C
:
CREATE FUNCTION [dbo].[GET_TBC](@parentID Integer)
returns nvarchar(MAX)
Begin
declare @result as varchar(MAX)
set @result = ''
select @result = @result + _YOURCOLUMN_ + '; '
from TABLE_C
WHERE PARENT_ID_COL = @parentID
select @result = left (@result , len(@result )-1);
return @result
end
并在select语句中使用此函数:
SELECT TableA.*, GET_TBC(TableB.ID)
FROM TableA, TableB
WHERE TableB.ParentID = TableA.ID