Avatar billede teamdev Novice
18. maj 2017 - 21:32 Der er 5 kommentarer og
1 løsning

flere rækker til en kolonne

Hej kloge mennesker

Har en tabel skruet sammen således:
Tre kolonner:
FK_ID | PK_ID | Tekst
    1    |      1    |      tekst1         
    1      |    2    |      tekst2
    1  |        3    |      tekst3
    2    |      4    |      tekst1
    2      |    5    |      tekst2
    3    |      6  |        tekst1
    4    |      7    |      tekst1       
    4    |      8    |      tekst2
    5      |    9    |      tekst3

jeg vil gerne hive data over i en anden tabel så data ser således ud:
FK_ID | Tekst
    1  |    tekst1,tekst2, tekst3
    2  |  tekst1,tekst2
    3  |    tekst1
    4  |    tekst1,tekst2
    5  |    tekst3

nogen der kan komme med et bud?
Avatar billede arne_v Ekspert
18. maj 2017 - 21:41 #1
Umiddelbart virker det som en rigtig daarlig ide med en tabel med kommaseparerede vaerdier.

MySQL har en fix group concat funktion, men den har SQLServer ikke.

https://www.computerworld.dk/eksperten/spm/1016519 diskuterer nogle alternativer.
Avatar billede teamdev Novice
18. maj 2017 - 22:36 #3
enig i at kommasepareret ikke hører til i en db, kommaet var blot eksempel på adskillelsen i realiteten bliver det noget &vbcrlf i stedet

Data skal bruges til et brugervenligt udtræk
Avatar billede arne_v Ekspert
18. maj 2017 - 22:42 #4
Lad applikations lave det i det endelige udtraek fremfor at gemme redundante data i databasen.
Avatar billede teamdev Novice
19. maj 2017 - 08:13 #5
Der er ingen applikation og redundante data er inderligt ligegyldigt her, da data alene skal trækkes ud 1 gang hvorefter databasen lukkes ned
Avatar billede garrett Seniormester
19. maj 2017 - 08:34 #6
Den kan faktisk løses på følgende måde:
SELECT DISTINCT T1.FK_ID,
STUFF((SELECT ',', T2.Tekst FROM Table1 T2 WHERE T1.FK_ID = T2.FK_ID FOR XML PATH('')),1,1,'')
FROM Table1 T1;

STUFF bliver brugt til at fjerne det første komma der bliver selected.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester