webForumDet fria alternativet

subselect med flera värden

5 svar · 457 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

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

@ndersMedlem sedan juni 200032 969 inlägg
#2

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

SELECT foo, 
(SELECT foo + ',' + bar + ',' + foobar FROM tblFoo) AS fooBarFooBar 
FROM tblBanana
doggelitoMedlem 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
LarsGMedlem 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.

BrimbaMedlem sedan dec. 19995 875 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
doggelitoMedlem sedan juni 20003 076 inlägg
#6

finemang! :bire

124 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)