SQLite: объединение двух операторов выбора, включающих выражение подсчета - PullRequest
0 голосов
/ 28 июля 2011

У меня есть таблица, содержащая список папок, каждая папка имеет идентификатор и описание

SELECT * FROM folders

_id |   description
---------------------------
1   |   default
2   |   test

У меня есть таблица изображений, которая содержит список изображений, каждое изображение имеет свёртку

select folderid, count(*) as imagecount from images GROUP BY folderid;

folderid|   imagecount
---------------------------
1       |   4
2       |   5

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

?????

_id |   description |   imagecount
------------------------------------------------------
1   |   default     |   4
2   |   test        |   5

Я попробовал следующий запрос:

SELECT _id, description from folders, (select folderid, count(*) as imagecount from images GROUP BY folder) WHERE _id = folderid;

Однако это не работает, потому что он не возвращает столбец imagecount. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Это также действительный запрос SQLite, который вернет ответ на ваш вопрос: сколько изображений в каждой папке?

        select f.description, sum ( case when i.folderid is null then 0 else 1 end ) as imagecount 
        from folders f left join images i on i.folderid = f.id
        group by f.description

или вместо sum () с оператором case вы можете просто сделать count(i.folderid) as imagecount

1 голос
/ 28 июля 2011

Ты рядом ...

SELECT _id, description, imagecount
from folders,
(select folderid, count(*) as imagecount from images GROUP BY folderid)
WHERE _id = folderid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...