SQL Server Query从多个表中获取数据

时间:2015-12-03 14:39:29

标签: sql-server join

我需要一个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的主键值包含逗号单独的字符串。

2 个答案:

答案 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