SQL erlaubt nicht die Verwendung des Spaltenalias in der Filterbedingung derselben Abfrage.wenn Sie den Spaltennamen verwenden möchten, müssen Sie als Unterabfrage wie unten verwenden.
SELECT *
FROM
(SELECT title, COUNT(r.rental_id) AS rentCount
FROM film f
JOIN Inventory I on f.film_id=I.film_id
JOIN rental r on l.Inventory_id= r.Inventory_id
GROUP BY title)t
WHERE rentCount >= 1
ORDER BY rentCount
Sie können auch eine HAVING-Klausel verwenden, wenn Sie eine agrgregate Funktion verwenden und wollten die Filter in der Abfrage machen.
SELECT *
FROM
(SELECT title, COUNT(r.rental_id) AS rentCount
FROM film f
JOIN Inventory I on f.film_id=I.film_id
JOIN rental r on l.inventory_id= r.inventory_id
GROUP BY title
Having Count(rental_id)>=1)t
ORDER BY rentCount
Denken Sie immer daran, die Kommas Verwenden Sie niemals zu verknüpfen oder Beziehung zwischen dem tables.Write entsprechenden verbindet zu machen und them.In Ihrem Fall verknüpfen, wenn Sie INENER verwenden JOIN gibt es keine Notwendigkeit des Filer-Zustand ‚Wo rentCount> = 1 ', da die Bedingung immer einen wahren Wert zurückgibt. Ich meine, die folgende Abfrage wird Ihnen das gleiche Ergebnis geben wie die anderen.
SELECT title, COUNT(r.rental_id) AS rentCount
FROM film f
JOIN Inventory I on f.film_id=I.film_id
JOIN rental r on l.inventory_id= r.inventory_id
GROUP BY title
Verwenden Sie 'HAVING' anstelle von' WHERE', um Ihr erstes Problem zu lösen. Wenn zwischen diesen Tabellen keine Verbindung besteht, ist Ihre Abfrage nicht sinnvoll. Benutze zumindest Aliase, um zu klären, welche Spalte was bedeutet. –