2016-10-10 2 views
1

Ich habe ein großes Problem mit meiner Abfrage, aus irgendeinem Grund kann ich nur nicht eine der WHERE-Klauseln zu arbeiten.Postgres SQL-Abfrage identifiziert die Spalte nicht

Das ist mein SQL:

SELECT COUNT(*) FROM "diets" JOIN "meals" on "idDiet" = "dietId" 
WHERE kcal != 0 AND "diets.createdAt" > '2016-10-2' 
GROUP BY "userIdUser" HAVING count(*) >= 5; 

Und mein Fehler:

ERROR: column "diets.createdAt" does not exist 

Mein Schema für beide Tabellen:

enter image description here enter image description here

Jede Idee, was muss ich Tun Sie, damit diese Abfrage funktioniert? Vielen Dank, wenn weitere Informationen benötigt werden, lassen Sie es mich bitte wissen.

+0

Sie sollten allgemeine Bezeichner in Anführungszeichen vermeiden. Sie sind viel mehr Ärger als sie es wert sind. Wenn Sie nie doppelte Anführungszeichen verwenden, wird es Ihnen gut gehen –

Antwort

2

Ihre Zitate sind falsch:

SELECT COUNT(*) 
FROM "diets" JOIN 
    "meals" 
    ON "idDiet" = "dietId" 
WHERE kcal <> 0 AND "diets"."createdAt" > '2016-10-2' 
GROUP BY "userIdUser" 
HAVING count(*) >= 5; 

Die doppelten Anführungszeichen gehen um eine Kennung. Eine qualifizierte Spaltenreferenz wie diates.createdAt besteht aus zwei Bezeichnern, so dass jeder die Anführungszeichen haben muss (wenn Sie sie überhaupt haben).

Ansonsten beziehen Sie sich auf eine Spalte mit dem Namen "diets.createdAt". Das heißt, der Spaltenname würde eine Periode enthalten.

+0

Das ist erstaunlich, vielen Dank !!! Ich weiß, das war ein dummer Fehler, aber nicht einmal mein Datenbankprofessor hat es bemerkt, als ich ihn befragt habe. Du besitzt! – leofontes

0
SELECT COUNT(*) FROM diets a JOIN meals b on a.idDiet = b.dietId 
WHERE a.kcal <> 0 AND a.createdAt > '2016-10-2' 
GROUP BY a.userIdUser HAVING count(*) >= 5; 
+0

Die Spalten wurden mit doppelten Anführungszeichen erstellt, wodurch die Groß-/Kleinschreibung beachtet wird. 'createdAt' ist ein anderer Spaltenname als' 'createdAt" '- leofontes muss ständig doppelte Anführungszeichen verwenden –

Verwandte Themen