Запрос к базе данных (RoomDB) - PullRequest
0 голосов
/ 01 октября 2018

Я получаю заголовок и COUNT (isRead) из табличного уведомления, где isRead = 0

Он получает заголовок и число прочитанных для каждого заголовка.Это нормально и возвращается после

Title       count
john          3
denil         4


            @Query("SELECT title,COUNT(isRead)as isRead FROM Notification WHERE 
            pkgName = :packagename and isRead=0 Group By title")

, но если count = 0, он возвращает ноль.

мне нужно следующее:

Title     count
john       0
denil      0

как я могу это сделатьit.???

1 Ответ

0 голосов
/ 01 октября 2018

Если вы хотите, чтобы все данные в таблице для пакета, переместите условие в SELECT

SELECT title, COUNT(CASE WHEN isRead = 0 THEN 1 ELSE 0 END) as isRead
FROM Notification
WHERE pkgName = :packagename 
GROUP BY title;

Если вы хотите, чтобы все заголовки в таблице независимо от пакета:

SELECT t.title, COUNT(n.title)
FROM (SELECT DISTINCT title FROM Notification) t LEFT JOIN
     Notification n
     ON n.title = p.title AND t.pkgName = :packagename AND
        n.isRead = 0
GROUP BY t.title;

Если у вас есть другая таблица с нужным списком заголовков, используйте ее вместо подзапроса для t.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...