2 Stimmen

Wie kann ich diese Abfrage einfacher schreiben

Ich habe eine Abfrage, die Fragen aus einer Tabelle und Antworten aus einer anderen abruft.

SELECT 
  questions.question, 
  questions.answers, 
  (SELECT COUNT(answer) FROM answers WHERE question_id = 1 AND answer = 1 
          GROUP BY answer) as ans1, 
  (SELECT COUNT(answer) FROM answers WHERE question_id = 1 AND answer = 2 
          GROUP BY answer) as ans2 
FROM questions 
WHERE questions.id = 1

Obwohl dies funktioniert, gefällt mir die Idee nicht, für jede Antwort eine zusätzliche Unterabfrage hinzuzufügen ( questions.answers ist eine durch Komma getrennte Zeichenfolge möglicher Antworten). Es ist machbar, aber ich bin sicher, dass es einen besseren Weg geben muss. Die Hauptsache ist, dass verschiedene Fragen eine unterschiedliche Anzahl von Antworten haben.

Gibt es einen besseren Weg, dies zu tun, oder ist dies ein akzeptabler Weg, Dinge zu tun? Ich könnte mir vorstellen, dass mehrere Unterauswahlen in einer Abfrage in Zukunft einen (kleinen) Leistungseinbruch zur Folge haben könnten (nicht, dass ich die Leistung noch testen würde).

Wenn es zutrifft, erwarte ich nicht mehr als 5 Antworten pro Frage.

0voto

codelogic Punkte 68703
      SELECT    questions.question,
                       questions.answers,
                       A.answer,
                       COUNT(A.answer)
        FROM      questions Q
LEFT JOIN      answers A
            ON      Q.id = A.question_id
     WHERE      questions.id = 1
          AND      A.answer IN (1,2)
GROUP BY     A.answer

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X