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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посчитать кол-во записей по условию 
:(
    Опции темы
Rodman
Дата 7.7.2010, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Дароф
есть 3 таблицы

tb_messages
mess_id    mediumint(9)        auto_increment                         Связь2    
mess_content    varchar(2000)    
mess_mgr_id    bigint(20)                                                                                 Связь1

tb_messages_groups
mgr_id    bigint(20)    auto_increment                                 Связь1
mgr_title    varchar(400)
mgr_date    datetime


tb_messages_parts
mpart_id    bigint(20)        auto_increment                            
mpart_mess_id    bigint(20)                                                                  Связь2    
mpart_smsc_id    varchar(400)    
mpart_delivery_date    datetime            
mpart_recipient_status    varchar(20)                       - параметр

так вот - как сделать запрос, который зная mgr_id из таблицы tb_messages_groups узнать количество записей связанных с mgr_id, по условию поля mpart_recipient_status из таблицы tb_messages_parts?

Сенкс
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Gluttton
Дата 7.7.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Код

select count([1])
from tb_messages_groups
    inner join tb_messages
    on tb_messages_groups.mgr_id = tb_messages.mess_mgr_id
        inner join tb_messages_parts
        on tb_messages.mess_id = tb_messages_parts.mpart_mess_id
    where tb_messages_parts.mpart_recipient_status = [2]


Заменить:
[1] - на то что нужно посчитать (т.к. я так и не понял, что нужно посчитать);
[2] - условие отбора.


--------------------
Слава Україні!
PM MAIL   Вверх
Rodman
Дата 7.7.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



весь пакет хранится сообщениями в tb_messages...
каждое сообщение делится на части, части хранятся в tb_messages_parts
у каждой части есть свой статус. 

нужно получить список записей пакетов сообщений (из таблицы tb_messages_groups), с добавлением к записи полей, содержащим количество сообщений в пакете, и количество сообщений по пакету, у которых статусы всех частей равны определенному значению

или проще:
нужно получить количество сообщений по пакету, у которых статусы всех частей равны определенному значению
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Gluttton
Дата 7.7.2010, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Цитата(Rodman @  7.7.2010,  13:48 Найти цитируемый пост)
или проще:нужно получить количество сообщений по пакету, у которых статусы всех частей равны определенному значению

Код

select tb_messages.mess_id, count(tb_messages.mess_id) as c
from tb_messages_groups
    inner join tb_messages
    on tb_messages_groups.mgr_id = tb_messages.mess_mgr_id
    where not exsist
    (
        select * from 
        tb_messages as a
            inner join tb_messages_parts
            on tb_messages.mess_id = tb_messages_parts.mpart_mess_id
            where a.mess_id = tb_messages.mess_id
            and tb_messages_parts.mpart_recipient_status = [2]
    )
    group by tb_messages.mess_id


Заменить:
[2] - условие отбора.

Цитата(Rodman @  7.7.2010,  13:48 Найти цитируемый пост)
с добавлением к записи полей, содержащим количество сообщений в пакете, и количество сообщений по пакету, у которых статусы всех частей равны определенному значению

 smile 

Поправил... Прошу прощения не поняв смысла запроса написал код...
Код писал без проверки - могут быть ошибки.

Это сообщение отредактировал(а) Gluttton - 7.7.2010, 14:21


--------------------
Слава Україні!
PM MAIL   Вверх
Rodman
Дата 7.7.2010, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Код

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right 
syntax to use near 'select * from tb_messages as a inner join tb_me' at line 7
че ругается?
вроде же без приколов написано

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Gluttton
Дата 7.7.2010, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Rodman, попробуй выполнить два запроса и скажи, который из них вернет ошибку:
Код

select tb_messages.mess_id, count(tb_messages.mess_id) as c
from tb_messages_groups
    inner join tb_messages
    on tb_messages_groups.mgr_id = tb_messages.mess_mgr_id
    group by tb_messages.mess_id


Код

select * from 
        tb_messages
            inner join tb_messages_parts
            on tb_messages.mess_id = tb_messages_parts.mpart_mess_id


И запрос опять с ошибкой smile нужно будет еще подумать smile ...

Добавлено @ 20:01
Код

select tb_messages_groups.mgr_id, count(tb_messages.mess_id) as c
from tb_messages_groups
    inner join tb_messages
    on tb_messages_groups.mgr_id = tb_messages.mess_mgr_id
    where not exsist
    (
        select * from 
        tb_messages as a
            inner join tb_messages_parts
            on tb_messages.mess_id = tb_messages_parts.mpart_mess_id
            where a.mess_id = tb_messages.mess_id
            and tb_messages_parts.mpart_recipient_status = [2]
    )
    group by tb_messages_groups.mgr_id


Гхм-гхм... А так?

И ещё раз поправил последний запрос - я всегда отличался невнимательностью, но сегодня я в ударе!

Это сообщение отредактировал(а) Gluttton - 7.7.2010, 20:13


--------------------
Слава Україні!
PM MAIL   Вверх
Rodman
Дата 7.7.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



они не хотят возвращать ошибку!
злойдеи
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Gluttton
Дата 7.7.2010, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Я так понимаю, таблицы относятся следующим образом:
Цитата

tb_messages_groups ---------> tb_messages ---------> tb_messages_parts
                   1        M             1        M

А на выходе нужно получить (с учетом условия по tb_messages_parts):
Цитата

tb_messages_groups | count (tb_messages)
-------------------|--------------------
                   |                    
----------------------------------------

Правильно?

Добавлено через 40 секунд
Цитата(Rodman @  7.7.2010,  20:03 Найти цитируемый пост)
они не хотят возвращать ошибку!
злойдеи 

А третий (добавленный) запрос?


--------------------
Слава Україні!
PM MAIL   Вверх
Akina
Дата 7.7.2010, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Rodman, дай скрипты создания таблиц, а? ещё лучше - с минимальным наполнением.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

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


 




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


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

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