Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с запросом, 2 таблицы 
V
    Опции темы
Sharkfire88
Дата 11.12.2011, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.1.2011

Репутация: нет
Всего: нет



Добрый день.

Firebird 2.1 


Таблица TASKS
Код


CREATE TABLE TASKS (
    ID_TASK      TYPE_ID,
    ID_OWNER     TYPE_ID,
    ID_USER      TYPE_ID,
);


Таблица COMMENTS
Код


CREATE COMMENTS (
    ID_COMMENT    TYPE_ID,
    ID_ITEM       TYPE_ID,
    COMMENT_TYPE  TYPE_SMALLINT,
    UNREAD        TYPE_LOGIC
);


Общий ключ у них TASKS.ID_TASK = COMMENTS.ID_ITEM

Мне надо получить 2 колонки:

1. Кол-во записей для каждого TASKS.ID_TASK, которые есть в COMMENTS с таким же ID_ITEM
2. Кол-во записей для каждого TASKS.ID_TASK, которые есть в COMMENTS с таким же ID_ITEM и UNREAD = 1 

К примеру:

Код

ID_TASK                   ALL_COMMENT_COUNT          UNREAD_COMMENT_COUNT
     0                             1                                 1 
     1                             2                                 0
     2                             5                                 2    


Спасибо.

Это сообщение отредактировал(а) Sharkfire88 - 11.12.2011, 00:19
PM MAIL   Вверх
ndbn
Дата 11.12.2011, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.9.2010

Репутация: нет
Всего: нет




select t.ID_TASK
         ,(select COUNT(c.ID_COMMENT) from COMMENTS c where c.ID_ITEM = t.ID_TASK) as ALL_COMMENT_COUNT 
         ,(select COUNT(c.ID_COMMENT) from COMMENTS c where c.ID_ITEM = t.ID_TASK and c.UNREAD = 1) as UNREAD_COMMENT_COUNT 
  from TASKS t

PM MAIL   Вверх
Sharkfire88
Дата 11.12.2011, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.1.2011

Репутация: нет
Всего: нет



Спасибо.
PM MAIL   Вверх
Zloxa
Дата 12.12.2011, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Код

select  TASKS.ID_TASK
         , count(COMMENTS.ID_ITEM) ALL_COMMENT_COUNT 
         , count(case when c.unread = 1 then 1 end) UNREAD_COMMENT_COUNT 
from tasks 
left join COMMENTS on TASKS.ID_TASK = COMMENTS.ID_ITEM
group by TASKS.ID_TASK



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Sharkfire88
Дата 12.12.2011, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.1.2011

Репутация: нет
Всего: нет



Спасибо, этот вариант судя по анализатору лучше ... 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1117 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.