Witam
Mam taką tabelę, gdzie są wpisy o ogłoszeniach i userach, którzy je już widzieli
Mam zapytanie w Oracle Db które zwraca userowi liczbę nieprzeczytanych ogłoszeń typu "Sale"
SELECT
(
SELECT
COUNT(*)
FROM
ANNOUNCEMENTS
WHERE
TYPE = 'Sale'
AND USER_ID IS NULL
)
-
(
SELECT
COUNT(*)
FROM
ANNOUNCEMENTS
WHERE
TYPE = 'Sale'
AND USER_ID = 33
)
FROM DUAL
To zapytanie zwraca poprawne wyniki. Dlaczego tak, a nie inaczej to raczej nie ważne (są jeszcze inne kolumny).
Takie samo zapytanie można zrobić dla ogłoszeń typu "Advertisement", "Public" itd.
Chciałbym aby jednym zapytanie z GROUP BY można było zwrócić listę typów i ilość nieprzeczytanych przez usera (przy użyciu powyższego zapytania)
Czyli teraz zwraca np. samą liczbę: 21
To potem powinno być:
Sale | 21
Advertisement | 15
Public | 31
itd.
Czy ktoś może pomóć to zrobić? Próbowałem zrobić różne warianty w stylu:
SELECT
TYPE,
(
SELECT
COUNT(*)
FROM
ANNOUNCEMENTS
WHERE
USER_ID IS NULL
)
-
(
SELECT
COUNT(*)
FROM
ANNOUNCEMENTS
WHERE
USER_ID = 33
)
GROUP BY TYPE
FROM DUAL
ale w ogóle jest niepoprawne składniowo