Auswertung einer Umfrage

eviLwitcH

Grünschnabel
Hallöchen momentan stehe ich irgendwie total auf dem Schlauch, was die Logik bei meiner Ausgabe angeht :(

Ich habe eine mySQL-Tabelle in der Benutzer IDs, Frage und Antwort gespeichert werden..so in etwa:

ID | Frage | Antwort
----------------------------
1 | Frage1 | 2
1 | Frage2 | 3
1 | Frage3 | 6
2 | Frage1 | 1
2 | Frage2 | 5
...

(Bei den Antworten sind jewels die Zahlen 1 bis 6 möglich)

Jetzt möchte ich gerne auf einer Website eine Tabelle ausgeben, in der angezeigt wird wie viele User auf Frage 1 mit 1 , daneben mit 2 usw geantwortet haben.

Ungefär so:
Frage/Antw | 1 | 2 | 3 | 4 | 5 | 6
--------------------------------------------
Frage1 |
Frage2 |

In den Feldern würde dann zB "2 Leute" oder sowas stehen...

Kann mir vielleicht jemand einen kleinen Denkanstoß geben? :confused:
 
Also ich denke mit einer Tabelle wirst du da wohl nicht hinkommen. Vielmehr brauchst du ja eine für die Fragen, eine verknüpfte mit den Antworten und eine verknüpfte mit den Antworten der User. Dann ist deine Frage auch einfach zu beantworten.
Dein DB-"Schema" müsste dann ungefägr so aussehen:
Code:
Tabelle Fragen:
id | frage

Tabelle Antworten:
id | qID | Antwort

Tabelle User-Antworten:
id | aID | summe

qID = Verknüpfung zur Fragen-Tabelle
aID = Verknüpfung zur Antwort-Tabelle

Nun suchst du Dir einfach beim Abarbeiten der Fragen die entsprechenden Antworten aus der Antwort-Tabelle. Nach dem Absenden des Formulars speicherst Du die User-Antwort wenn noch nicht vorhanden mit der Antwort-ID bzw falls vorhanden erhöhst Du einfach den Wert im Feld summe um eins. Nun kannst Du dir einfach den Wert im Feld "summe" ausgeben lassen und du hast automatisch die Anzahl der abgegebenen Antworten. Spaßeshalber könntest Du die Tabelle "Fragen" noch um einen "counter" erweitern und ein paar statistische Werte ausrechnen.
 
Hallo,

ein klassischer Fall von Gruppierung:
SQL:
SELECT
  `Frage`,
  `Antwort`
  COUNT(*) AS `Anzahl`

FROM
  `Tabelle`

GROUP BY
  `Frage`,
  `Antwort`

ORDER BY
  `Frage` ASC,
  `Antwort` ASC

Grüße,
Matthias
 
hmm danke erst ein mal....jetzt habe ich aber folgendes problem...wenn bei einer frage keiner eine bestimmte antwort gestimmt hat, dann wird nicht "0" als ergebnis geliefert sondern die Zeile übersprungen :(
 
Hallo,

das ist klar, denn MySQL kann ja nicht nach einem Wert gruppieren, den es nicht gibt. Das wäre dann eher die Aufgabe des Programms, welches das Abfrageergebnis weiterverarbeitet. Alternativ könnte man das Problem aber auch durch einen zusätzlichen JOIN mit einer Antworttabelle lösen. Dazu müsste man aber mehr über dein Datenbankschema wissen.

Grüße,
Matthias
 
Zurück