Alex: Auswertung einer Umfrage

Beitrag lesen

Hallo,

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).

Es fällt mir schwer, dazu etwas zu sagen, da MySQL bisher das einzige RDBS ist, mit dem ich zu tun hatte. ;-)

Um Dir besser helfen zu können, liefere doch bitte ein paar Beispieldaten, sowohl für Multiple Choice, als auch Text.

Das wird sehr schnell sehr viel. Deshalb erstmal ein etwas überschaubarerer Auszug:

questions:
+-----+-----+------+----------------------------------------------------+
| sid | qid | aid  | question                                           |
+-----+-----+------+----------------------------------------------------+
| 32  | 318 | 1006 | In welcher Gruppe hast Du gearbeitet?              |
| 32  | 319 | 1007 | Welche Programmiersprachen beherrschst Du?         |
| 32  | 321 | 1008 | Sollten lieber JOINs benutzt werden?               |
| 32  | 324 | 1008 | Kommen auch andere DBS zum Einsatz?                |
| 32  | 342 |  999 | Welche anderen Programmiersprachen beherrschst Du? |
+-----+-----+------+----------------------------------------------------+

answer_types:
+------+-----+------+
| aid  | sid | type |
+------+-----+------+
|  999 | 32  | T    | <- Textfeld
| 1006 | 32  | MS   | <- Multiple Choice mit Einfachankreuzen
| 1007 | 32  | MM   | <- Multiple Choice mit Mehrfachankreuzen
| 1008 | 32  | MS   |
+------+-----+------+

answer_values:
+------+------+-------------------+
| avid | aid  | value             |
+------+------+-------------------+
| 4040 | 1006 | Produktdesign     |
| 4041 | 1006 | Schaltungstechnik |
| 4042 | 1006 | Programmierung    |
| 4045 | 1007 | C/C++             |
| 4046 | 1007 | Haskell           |
| 4047 | 1007 | Java              |
| 4048 | 1007 | Andere ...        |
| 4051 | 1008 | Ja                |
| 4052 | 1008 | Nein              |
+------+------+-------------------+

results:
+------+-----+-----+------+
| rid  | qid | sid | avid |
+------+-----+-----+------+
| 1678 | 321 | 32  | 4051 |
| 1698 | 321 | 32  | 4051 |
| 1716 | 321 | 32  | 4051 |
| 1849 | 319 | 32  | 4045 |
| 1877 | 318 | 32  | 4041 |
| 1953 | 318 | 32  | 4042 |
| 1982 | 318 | 32  | 4041 |
| 1985 | 319 | 32  | 4045 |
| 1990 | 324 | 32  | 4051 |
| 2019 | 318 | 32  | 4042 |
| 2021 | 319 | 32  | 4046 |
| 2026 | 319 | 32  | 4048 |
| 2027 | 324 | 32  | 4052 |
| 2039 | 318 | 32  | 4040 |
| 2040 | 319 | 32  | 4045 |
| 2041 | 319 | 32  | 4046 |
| 2042 | 319 | 32  | 4047 |
| 2043 | 319 | 32  | 4048 |
| 2047 | 324 | 32  | 4052 |
+------+-----+-----+------+

results_text:
+------+-----+-----+---------+
| rid  | qid | sid | answer  |
+------+-----+-----+---------+
| 249  | 342 | 32  | Cobol   |
| 311  | 342 | 32  | Fortran |
| 316  | 342 | 32  | Fortran |
+------+-----+-----+---------+

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.

Klingt nicht schlecht. Das probier ich eventuell mal aus. Je nachdem, wie Deine Antwort auf die Folgefrage ausfällt. ;-)

(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.

Was wäre Dein alternativer Vorschlag? Lieber zwei getrennte Abfragen oder einfach nur die beiden Typen auf jeweils eigene Spalten im Ergebnis verteilen?

Viele Grüße

Alex