Lets say I have e Tables - Table1, Table2 and Table3. Table2 has foreign keys on Table1 and Table3. Table2 has 'Name' field. I want to select Table1.id and all matching names(concatenated) from Table3. Here is query for that
CREATE FUNCTION dbo.concat_string(@Input int)
RETURNS VARCHAR(8000)
BEGIN
DECLARE @strList VARCHAR(8000)
SELECT @strList = COALESCE(@strList + ' ', '') + CAST(Table3.Name AS VARCHAR)
FROM Table1
JOIN Table2 ON Table2.Table1_ID = Table1.ID
JOIN Table3 ON Table3.ID = Table2.Table3_ID
WHERE
Table1.ID = @Input
RETURN @strList;
END
SELECT Table1.ID, Table4.cc
FROM Table1 JOIN
(SELECT Table1.ID dbo.concat_string(Table1.ID) as "cc" FROM Table1) Table4
ON Table1.ID = Table4.cID
It works the way I wanted to, but it is too slow. How can I optimize this? Any optimization will be helpfull.