webForumDet fria alternativet
Logga in / Bli medlem

subselect med flera värden

Databaser & SQL

5 svar · 457 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Trådstart#1

en subselect kan ju bara returnera ett värde men, går det att returnera flera värden som en kommaseparerad sträng?

Medlem sedan juni 200032 967 inlägg
#2

Ja, det är bara att konkatenera i din select.

SELECT foo, 
(SELECT foo + ',' + bar + ',' + foobar FROM tblFoo) AS fooBarFooBar 
FROM tblBanana
Medlem sedan juni 20003 076 inlägg
#3

Jag var visst lite otydlig!
Jag menar flera värden av samma kolumn.
Ex.
En person har två bilar.
Databas: en persontabell och en biltabell.

Svaret ska bli:

ID   Person   Bilar
1    Adam     Volvo, Saab
Medlem sedan dec. 200012 464 inlägg
#4

SQL server I presume

Om du vill hämta data för flera personer så får du skriva en egen funktion som gör konkatenerigen. Om du vill ha tillbaka en rad så går det direkt med lite SQL.

Medlem sedan dec. 19995 876 inlägg
#5

Det kan exempelvis se ut såhär

CREATE FUNCTION [dbo].[GetListOfAUsersCars](@userId [int])
RETURNS [varchar](1000) AS
begin
	DECLARE @cars varchar(1000)

	SELECT 
		@cars = COALESCE(@cars + ',', '') + CAST(carname AS varchar(5))
	FROM 
		userscars
	WHERE 
		userId = @userId

	RETURN @cars
end

SELECT 
    username, dbo.GetListOfAUsersCars(userid)
FROM
    users
Medlem sedan juni 20003 076 inlägg
#6

finemang! :bire

382 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
126 ms — hämta statistik (db)
127 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)