2017-06-19 2 views
0

Wirklich versuchen herauszufinden, warum SQL-Abfrage nicht durchlaufen. Ich nehme an, die Struktur ist ein bisschen falsch, aber kann nicht herausfinden, wo genau. Die Verweise auf Tabellen sind alle korrekt.Schachtelung COUNT in Anweisung mit JOIN

+1

Das Abgrenzen von Strings mit Anführungszeichen hilft normalerweise, ebenso wie die tatsächlichen Fehler, die beim Versuch auftreten, eine fehlerhafte Abfrage auszuführen. – Uueerdo

+1

sollte das literal author_email nicht zitiert werden? – anneb

+0

Oh Gott, ich bin jetzt so peinlich ... Danke Jungs und Entschuldigung dafür, so schlecht zu sein, der ganze Tag der Programmierung hat mich müde gemacht –

Antwort

0

Wenn Sie Anzahl verwenden, müssen Sie für die anderen Spalten in Ihrer SELECT-Klausel die Gruppierung verwenden.

SELECT TAP_questionnaires.id, TAP_questionnaires.name, TAP_questionnaires.active, TAP_useranswers_ip.questionnaire_id, COUNT(TAP_useranswers_ip.ip) FROM TAP_questionnaires LEFT JOIN TAP_useranswers_ip on TAP_questionnaires.id=TAP_useranswers_ip.questionnaire_id WHERE author_email="[email protected]" 
group by TAP_questionnaires.id, TAP_questionnaires.active 

Ich denke TAP_questionnaires.name ist nicht notwendig, weil ich nehme an, es hängt von TAP_questionnaires.id ab. TAP_useranswers_ip.questionnaire_id ist der gleiche Wert wie TAP_questionnaires.id

Hoffe, dass hilft!

+0

Vielen Dank, arbeitete! :) –

0

Ich denke, diese Version ist klarer:

SELECT q.id, q.name, q.active, COUNT(a.ip) 
FROM TAP_questionnaires q LEFT JOIN 
    TAP_useranswers_ip a 
    ON on q.id = a.questionnaire_id 
WHERE author_email = '[email protected]' 
GROUP BY q.id, q.name, q.active; 

Hinweise:

  • Sie benötigen einen GROUP BY.
  • Sie benötigen einfache Anführungszeichen um die String-Konstante.
  • Tabellenaliasnamen erleichtern das Schreiben und Lesen der Abfrage.
  • Es gibt keinen Grund, a.questionnaire_id einzuschließen. Sie haben bereits q.id.
+0

Das funktionierte tatsächlich wie ein Charme. Realisiert, ich brauche Gruppe nach ein paar Versuchen. Vielen Dank! –