Hallo,
Beim Ergebnis gibt es allerdings ein Problem: Durch die Gruppierung gehen Antworttypen verloren, die kein einziges Mal ausgewählt wurden (wofür COUNT(av.avid) also 0 liefern würde). Krieg ich doch bloß wieder durch JOINs mit hinein?
Deine Abfrage ist leider so kaputt, dass nur MySQL keinen Syntaxfehler meldet. (Du wählst sechs Spalten aus, die keine Aggregatsfunktion enthalten - gruppierst jedoch nur nach zwei davon).
Und ja, Du benötigst OUTER JOINS.
Abgesehen davon finde ich explizite Joinsyntax wesentlich übersichtlicher und verständlicher als alles in der WHERE-Klausel zu mixen. Ich schreib' erst mal auf explizite Join-Syntax um, um die Abfrage zu verstehen, wenn implizite Joins verwendet werden.
Um Dir besser helfen zu können, liefere doch bitte ein paar Beispieldaten, sowohl für Multiple Choice, als auch Text.
+-----+------+---------------+------------------+------+
| qid | type | question | value | cnt |
+-----+------+---------------+------------------+------+
| 1 | mc | Was gibt's? | Nichts | 120 |
| 1 | mc | Was gibt's? | Ärger | 50 |
| 2 | txt | Und sonst so? | Muß ja. | NULL |
| 2 | txt | Und sonst so? | Gut. Und selber? | NULL |
| 2 | txt | Und sonst so? | Ooch, weiß nich. | NULL |
+-----+------+---------------+------------------+------+
Wie krieg ich meinen bisherigen Ansatz noch erweitert, um results_text in dieser Form mit ins Ergebnis einfließen zu lassen?
UNION könnte Dir helfen.
(Oder ist es gar keine so gute Idee, diese beiden unterschiedlichen Ergebnistypen auf Teufel komm raus in dieser Form miteinander verheiraten zu wollen?)
Ich würde diese beiden Typen *nicht* zusammenstellen.
Freundliche Grüße
Vinzenz