Avatar billede Simon Praktikant
01. februar 2008 - 14:19 Der er 7 kommentarer og
1 løsning

Udtræk af data

I min MySql-database har jeg en tabel som indeholder svar fra en spørgeundersøgelse.
Tabellen kalder jeg MySvar:

bruger    spm    svar
--------------------
hans    0    ja
hans    1    nej
hans    2    nej
ole    0    ja
ole    1    ja
ole    2    ja
pia    0    nej
pia    1    nej
pia    2    nej


Jeg kunne godt tænke mig at lave et udtræk som giver mig følgende tabel.

Spm    Ja    Nej
-------------------
0    2    1
1    1    2
2    1    2



Indtil nu har jeg kun fundet ud af at finde hvor mange som har svaret ja til et bestemt spørgsmål.

SELECT count (bruger) as Ja FROM `MySvar` where svar = 1 and spm = 2

Hvordan gør man det?
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 15:29 #1
Select spm,svar,count(*) from MySvar group by spm,svar

skulle gerne give dig

0 ja 2
1 ja 1
2 ja 1
0 nej 1
1 nej 2
2 nej 3

Skal det stilles op på en anden måde overfor brugeren, ordner du det i det bagvedliggende programmeringssprog.
Avatar billede Simon Praktikant
04. februar 2008 - 09:36 #2
Hej erikjacobsen. Jeg har nu fået det til at virke som du beskriver, tak for det. Du henter ganske vist alle relevante data, men de bliver ikke hentet direkte på den form som jeg ønsker. Har du noget bud på hvordan man kan gøre det? Ellers lader jeg lige spørgsmålet stå åbent et par dage endnu, og hvis ikke der er nogle bud får du pont. Men mange tak for hjælpen indtil videre.
Avatar billede erikjacobsen Ekspert
04. februar 2008 - 09:49 #3
Nu skal man normalt ikke tænke på hvordan data er stillet op - "vandret" eller "lodret". SQL har sine begrænsninger i den henseende.
Som sagt er det noget man oftest bedre håndterer i det bagvedliggende programmeringssprog.
Avatar billede recli Nybegynder
05. februar 2008 - 11:50 #4
mysql> select * from svar;
+--------+------+-------------+
| bruger | spm  | bruger_svar |
Hej

Du kan faktisk godt lave noget i den stil. Det kræver dog noget lidt specielt sql:

Jeg har lavet en tabel, der har følgende indhold:

+--------+------+-------------+
| hans  |    1 | ja          |
| hans  |    2 | ja          |
| hans  |    3 | nej        |
| pia    |    1 | nej        |
| pia    |    2 | nej        |
| pia    |    3 | ja          |
| jens  |    1 | ja          |
| jens  |    2 | ja          |
| jens  |    3 | ja          |
+--------+------+-------------+
9 rows in set (0.00 sec)

mysql> SELECT  spm AS Spørgmål,
    ->    SUM(IF(bruger_svar='ja',1,0)) AS "Ja",
    ->    SUM(IF(bruger_svar='Nej',1,0)) AS "Nej"
    ->  FROM svar
    ->  GROUP BY spm
    ->  ORDER BY spm;
+----------+------+------+
| Spørgmål | Ja  | Nej  |
+----------+------+------+
|        1 |    2 |    1 |
|        2 |    2 |    1 |
|        3 |    2 |    1 |
+----------+------+------+
3 rows in set (0.00 sec)

Jeg håber, at det hjælper dig lidt videre.

Hilsen
  /Lars
Avatar billede recli Nybegynder
06. februar 2008 - 14:29 #5
Hej

Kan du gennemsku princippet, eller skal du have mere forklaring?
Avatar billede Simon Praktikant
09. februar 2008 - 22:11 #6
Til erikjacobsen: Tak for dit hurtige svar. Jeg fik det til at virke med lidt programmering.
Til recli: Ja, det var lige det jeg manglede. Tak for det.

Hvis du smider et svar erikjacobsen, deler I point, for hhv, hurtigt svar som hjalp mig en del videre, og det helt præcise svar på mit spørgsmål.

Tak for indsatsen!
Avatar billede erikjacobsen Ekspert
09. februar 2008 - 22:13 #7
Jeg samler slet ikke på point, tak.
Avatar billede Simon Praktikant
11. februar 2008 - 21:20 #8
Ok, men mange tak for hjælpen aligevel.
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