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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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