Frage

Wie kann ich aufgrund der Agregate Funktion in dem in Lehre verwenden?

Zum Beispiel möchte ich Benutzer mit dummen viel Zahlen kennen.

SELECT  u.name, COUNT(p.id) AS users_phonenumber_count
FROM    users u

    INNER JOIN phonenumbers p ON p.user_id = u.id
WHERE
    users_phonenumber_count > 10
GROUP BY
    u.id

Wie kann ich die users_phonenumber_count in dem in dql?

War es hilfreich?

Lösung

Sie müssen mit HAVING- nicht WHERE. Außerdem müssen Sie zu einer Gruppe von etwas, das tatsächlich in der Abfrage ist, in diesem Fall u.name. Unter der Annahme, u.name ist einzigartig -. Wenn nicht, Sie müssen Gruppe sowohl u.id und u.name

SELECT  u.name, COUNT(*) AS users_phonenumber_count
FROM    users u

    INNER JOIN phonenumbers p ON p.user_id = u.id
GROUP BY
    u.name
HAVING
    count(*) > 10

Andere Tipps

Ich kann nicht genaue Details erinnern, wie ich dies getan habe, aber denken Sie daran, dass es verwenden mußte „haben“

Dies ist wegen der Art und Weise SQL funktioniert, nicht speziell Lehre - WHERE nicht berechneten Werte vergleichen können, müssen Sie verwenden (oder Sie tun können WHERE COUNT (etwas)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top