24. maj 2005 - 00:29Der er
8 kommentarer og 1 løsning
Sammlægning af flere rows i et felt
Spørgsmål om konvertering :
Jeg har en foto -tabel : [ billedid, Titel, Note ]
Jeg har en fotopers tabel [ PID navn Billedid ]
En kort join vil vise alle personer der er på et billede. Men nu skal navne på alle personer med et bestemt billedID puttes ind i note-feltet på et billede. Altså : KAN MAN FLETTE FLERE RÆKKERS VÆRDI IND I ET FELT VIA T-SQL (MS-SQL)? Der er RIGTIGT mange records, så det ville være en lettelse, hvis det kunne se via SQL
Jeg tror iøvrigt at det vil være meget besværligt at lave i TSQL (en meget klodset stored procedure).
Jeg ville lave logikken i applikationen:
SELECT PID,navn,Billedid FROM fotopers ORDER BY Billedid løbe der result set igennem og akkumulere alle navne for et Billedid og lave en UPDATE foto med udfra den
Jeg overvejer også kraftigt at lave en hurtig .net-applikation der udfører dette. Men da konverteringen også indeholder adskilligt flere tabeller, helder jeg meget til at koncentrere mig om sql-løsningen. Og det bliver nok ikke sidste gang at der skal konverteres lignende tabeller. Og jeg mener også at Sql-serveren er betydeligt mere intelligent til at konvertere datatyper end via ADO.NET.
DECLARE curPersoner CURSOR FOR SELECT fotopers.Navn FROM fotopers INNER JOIN foto ON fotopers.BilledID = foto.BilledID WHERE BilledID = @BilledID
OPEN curPersoner
SET @stSep = '' SET @stReturn = ''
FETCH NEXT FROM curPersoner INTO @strTemp WHILE (@@FETCH_STATUS = 0) BEGIN SET @stReturn = @stReturn + @stSep + @strTemp SET @stSep = ', ' FETCH NEXT FROM curPersoner INTO @strTemp END
CLOSE curPersoner DEALLOCATE curPersoner
RETURN @stReturn
END
Og så kalde den:
SELECT Titel, dbo.f_Personer_Kommasep(BilledID) AS Personliste FROM foto WHERE ...
Men jeg vil råde dig til kun at kalde den for nogle få rækker, for den er tung at køre.
Ikke et øje var tørt, da jeg kørte Idanielsen's forslag på min SQL-server. Ca 8000 billeder, kræver lidt tid, men funktionen virkede perfekt. Alle der har deltaget skal have mange tak - men jeg vil gerne have at Idanielsen lige lægger et svar ind, så jeg kan give ham (øøhh../hende) de meget fortjente point. Tak for hjælp og kommentarer.
Pokkers - jeg skulle ellers lige sidde og spille klog, og bede (endnu engang) om at Idanielsen sendte et svar i stedet for en kommentar. Det endte desværre med at teepee fik hele puljen. Jeg ville nu foretrække at fordelingen blev mindst 200 point til Idanielsen (hvilket vidst også er max hos Eksperten.dk) Så finder lige ud af hvordan vi klarer dette problem. Endnu engang godt gået - ikke mindst IDanielsen.
da der ikke må gives mere end 200 for et spørgsmål så er den eneste mulige løsning vist hvis teepee opretter et overførsels spørgsmål til ldanielsen med reference til dette spørgsmål
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.