Avatar billede AOT1977 Nybegynder
05. maj 2013 - 21:58 Der er 11 kommentarer og
1 løsning

Tæl antal pladser

Tæl antal pladser
Jeg har en tabel men felretne id, plads, navn og point

plads indeholder tal der oplyser om det er 1 plads 2 plads osv
navn indeholder navn

Jeg har prøvet dette:
SELECT navn, COUNT(plads) AS antal FROM point GROUP BY navn ORDER BY antal DESC

det virker men jeg få ikke det jeg vil havde

det jeg vil havde er:

navn  antal 1.pladser  antal 2.pladser  antal 3.pladser  antal 4.pladser
lis              2                        3                  4                        9
kim            3                        2                  1                        6

Hvad mangler jeg eller er det noget helt andet jeg skal lave?
Avatar billede Syska Mester
05. maj 2013 - 22:07 #1
Samme gælder her.

Overstående kan du ikke som jeg lige ser det ... med mindre du "opretter" de columns i dit udtræk, men det virker ikke specielt dynamisk, og det tror jeg ikke du vil.

Du kan dig få det ud i rows ved også at lave en GROUP BY på plads og så kan du i din Business logic gruppere på navn og på den måde vende dine rows til columns.

Men mon ikke en anden, har en awesome ide jeg ikke lige har tænkt på :-)

mvh
05. maj 2013 - 23:52 #2
Prøv denne query:

SELECT p.navn,
(SELECT COUNT(*) FROM points WHERE navn = p.navn AND plads = 1 GROUP BY navn) antal 1.pladser,
(SELECT COUNT(*) FROM points WHERE navn = p.navn AND plads = 2 GROUP BY navn) antal 2.pladser,
(SELECT COUNT(*) FROM points WHERE navn = p.navn AND plads = 3 GROUP BY navn) antal 3.pladser,
(SELECT COUNT(*) FROM points WHERE navn = p.navn AND plads = 4 GROUP BY navn) antal 4.pladser
FROM points p
Avatar billede arne_v Ekspert
06. maj 2013 - 02:18 #3
SELECT navn,plads,COUNT(*) AS antal FROM point GROUP BY navn,plads ORDER BY navn,plads

og saa lad applikationen staa for at skrive pladser ud horisontalt.
06. maj 2013 - 05:37 #4
arne_v, det har du da i grunden ret i.  Så gør mysql'en det den er god til, at trække dataerne ud, uden at mysql'en belastes med det applikationen er bedre til, at præsentere dataerne.  Så langt burde jeg selv havde tænkt.
Avatar billede Syska Mester
06. maj 2013 - 08:29 #5
Så har jeg ikke helt sovet i søndags :-)
Avatar billede arne_v Ekspert
06. maj 2013 - 15:20 #6
Jeg er mest bekymret for situationen hvor range af plads aendrer sig.
Avatar billede AOT1977 Nybegynder
07. maj 2013 - 17:44 #7
okay, jeg prøver og venner tilbage
Avatar billede AOT1977 Nybegynder
07. maj 2013 - 18:11 #8
@ Christian_Belgien: når jeg prøver din få jeg denne op:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1.pladser, (SELECT COUNT(*) FROM ludo3gsLR_ludom_point WHERE point_nick = p.poin' at line 2

@ arne_v : din køre fint, men er der en måde at jeg kan få den til at fortælle mig om hvilken plads det er, lige nu skriver den bare :

lis 1
lis 2
lis 4
kim 2
kim 2
ole 1
ole 1
osv osv, kan man få den til er skrive
lis 1 4. pladser
lis 2 3. pladser
lis 4 1. pladser
kim 2 2. pladser
kim 2 1. pladser
ole 1 4. pladser
ole 1 3. pladser

?
Avatar billede arne_v Ekspert
07. maj 2013 - 18:18 #9
SELECT navn,plads,COUNT(*) AS antal FROM point GROUP BY navn,plads ORDER BY navn,plads

skulle meget gerne udskrive 3 kolonner
07. maj 2013 - 19:09 #10
#8 - jeg bruger 'antal 1.pladser' som alias for den kolonne hvor førstepladserne skal stå.  Måske kan din mysql ikke tolerere en alias med et punktum i, fordi den måske opfatter '1.pladser' som et felt 'pladser' i en tabel med navnet 1.  Du kunne jo prøve, hvis du vil anvende min omstændige kode i stedet for arne_v's mere elegante kode, at skrive '...GROUP BY navn) førstepladser,  ...GROUP BY navn) andenpladser, o.s.v.
Avatar billede AOT1977 Nybegynder
07. maj 2013 - 20:59 #11
@ arne_v : ja rigtig

Jeg har valgt at bruge arne's elegante kode.

så hvis du smider et svar så giver jeg point og siger 20.000 tak for jeres forslag og tid.
Avatar billede arne_v Ekspert
08. maj 2013 - 02:23 #12
svar
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