sql >> Databáze >  >> RDS >> Oracle

Nejedná se o chybu výrazu GROUP BY

Chyba mluví za vše, neseskupujete podle MEMBERS.MEMBER_ID a MEMBERS.MEMBER_NAME .

SELECT MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
     , COUNT(personal_training_sessions.session_id)
  FROM MEMBERS 
  JOIN personal_training_sessions
    ON personal_training_sessions.member_id = members.member_id
 GROUP BY MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME

Chcete počet osobních relací za člen, takže musíte seskupit podle informací o členech.

Základní (samozřejmě může být mnohem složitější) dotaz GROUP BY, SELECT je:

SELECT <column 1>, <column n>
     , <aggregate function 1>, <aggregate function n>
  FROM <table_name>
 GROUP BY <column 1>, <column n>

Agregační funkce je, jak říká Ken White, něco jako MIN() , MAX() , COUNT() atd. Seskupujete podle všech sloupce, které nejsou agregovány.

To bude fungovat, jak bylo zamýšleno, pouze pokud máte MEMBERS tabulka je jedinečná pro MEMBER_ID , ale na základě vašeho dotazu se domnívám, že ano. Abych objasnil, co tím myslím, pokud vaše tabulka není jedinečná pro MEMBER_ID pak nepočítáte počet relací na MEMBER_ID ale počet relací na MEMBER_ID a za MEMBER_NAME . Pokud jsou ve vztahu 1:1, je to vlastně totéž, ale pokud můžete mít více členů MEMBER_NAME s za MEMBER_ID pak to není.



  1. Co se stane, když vyčerpám bigint vygenerovaný klíč? Jak to zvládnout?

  2. Následný krok č. 1 při hledání vedoucích zástupných znaků

  3. EXECUTE chyba syntaxe v postgresql

  4. jak aktualizovat jedno nebo více polí ignorujících prázdná pole do databáze mysql?