28. december 2014 - 15:38 Der er 4 kommentarer og
1 løsning

Få en tabel ud af to tabeller...

Table tblRules og tblCount skal merges...

tblRules har Id, HeaderText
tblCount har Id, RuleId, UserId, Count

Linket via  tblRules.Id = tblCount.RuleId

tblRules har 25-30 rækker, som skal blive til kolonner...

tblCount kan have mange rækker for et UserId, idet et UserId kan have counts på flere RuleId's

tblCount kan f.eks. se således ud:
Id, RuleId, UserId, Count
1,      1,  748, 4
2,      3,  748, 12
3,      7,  748, 7
osv.


Resultat der ønskes er:
Headers:
UserId, tblRules rækker som kolonne headers
748,4,0,12,0,0,0,7,0,0,0
749,0,2,8,0,10,0,3,1,0,0
osv.

Så hvordan skal den sql se ud, som får merged to to tabeller sammen til en output tabel?
Avatar billede arne_v Ekspert
28. december 2014 - 16:27 #1
Maaske noget a la:

SELECT tc1.UserID,tc1.Count,...,tc25.Count
FROM tblRules
LEFT JOIN tblCount tc1 ON tblRules.Id = tc1.RuleId AND tc1.RuleId=1
...
LEFT JOIN tblCount tc25 ON tblRules.Id = tc25.RuleId AND tc25.RuleId=25
28. december 2014 - 16:43 #2
Tak Arne, jeg har dog brugfor, at det bliver dynamisk, da der kan komme flere rækker i tblRules, og dermed flere kolonner i resultat tabellen
Ligenu er der 10 rækker, men det VIL vokse over 50, og scriptet skulle helst virke hele tiden uden manuel tilpasning, når en bruger tilføjer en ny række i tblRules.
Avatar billede arne_v Ekspert
28. december 2014 - 16:52 #3
Drop SQL og lav det i applikationen.

Der skal alligevel laves noget i applikationen til at kunne haandtere et variabelt antal kolonner i query output.
28. december 2014 - 16:56 #4
What - drop sql...! Naii, jeg giver ikke sådan op. Sidder og læser om CROSS APPLY nu - der skal nok findes et eller andet der virker
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