1 (edited by ant386 2014-10-23 09:44:34)

Topic: Вопрос по выборке (SQL)

Здравствуйте, Уважаемые.
Суть проблемы такова - Есть некая база, например, запросов организаций.
Из нее необходимо:
- сделать выборку не повторяющихся организаций
получилось этим SQL запросом:
---------------------------------------------------------------------------
SELECT
DISTINCT
NameOrg.Наименование_организации,
COUNT (*)
FROM dbDoc
LEFT OUTER JOIN NameOrg ON NameOrg.id=dbDoc.id_NameOrg
GROUP BY NameOrg.Наименование_организации
----------------------------------------------------------------------------

- сделать выборку статуса запроса (разрешение, отказ или рассмотрение) (не получилось)

Прошу помочь. Подробней по результату во вложении.

Post's attachments

Attachment icon Документ Microsoft Word.doc 37.5 kb, 465 downloads since 2014-10-23 

Re: Вопрос по выборке (SQL)

Здравствуйте,


Пожалуйста, приложите архив вашего проекта к сообщению, удалив из него exe и dll файлы для меньшего размера.

Dmitry.

Re: Вопрос по выборке (SQL)

мне кажется тут не надо мудрить. и просто в файле отчета создать сводную таблицу по аналогу как это есть в экселе

Re: Вопрос по выборке (SQL)

я так понимаю у вас 3 таблицы
1. NameOrg - Организации
2. Status - Статусы (названеи таблицы условно так как в запросе о нем ни слова)
3. dbDoc - Запросы от организаций (содерждит 3 поля ID организации, ID статус, и Счетчик)

У Вас  по моему упущена упоминание второй табли.
И соответственно по моему разумению запрос должен выгядить примерно так.

SELECT
ddDoc.counter,
,NameOrg.Наименование_организации
,status.name //в зависимости от названия поля в таблице//

FROM dbDoc
LEFT OUTER JOIN NameOrg ON NameOrg.id=dbDoc.id_NameOrg
LEFT OUTER JOIN  status ON status.id=dbDoc.id_status

и с этим результатом уже пихать в сводный отчет
справа ставите NameOrg Наименование_организации
вверху ставите status.name
в теле - ddDoc.counter (по умолчанию там сумма стоит - выберете количество)

вроде так.

Re: Вопрос по выборке (SQL)

Добавил проект.

Post's attachments

Attachment icon _ Учет документов.zip 329.48 kb, 437 downloads since 2014-10-23 

Re: Вопрос по выборке (SQL)

Добавил возможность фильтрации запроса по статусу.

Post's attachments

Attachment icon _ Учет документов2.zip 9.01 kb, 464 downloads since 2014-10-23 

Dmitry.

Re: Вопрос по выборке (SQL)

Дмитрий, спасибо, но я не это имел ввиду. Хотелось бы, чтобы выводилось в одну таблицу сразу по столбцам
| Наименование | Количество запросов | Кол-во разрешений | Кол-во отказов | Кол-во Рассмотрений|

Можно ли сделать так сразу без фильтров?

Re: Вопрос по выборке (SQL)

Можно, тогда запрос будет таким:

SELECT DISTINCT

NameOrg.Наименование_организации,
( SELECT Count(*) FROM dbDoc WHERE dbDoc.id_NameOrg = NameOrg.id),
( SELECT Count(*) FROM dbDoc WHERE (dbDoc.id_NameOrg = NameOrg.id) AND (dbDoc.id_Status = 1) ),
( SELECT Count(*) FROM dbDoc WHERE (dbDoc.id_NameOrg = NameOrg.id) AND (dbDoc.id_Status = 2) ),
( SELECT Count(*) FROM dbDoc WHERE (dbDoc.id_NameOrg = NameOrg.id) AND (dbDoc.id_Status = 3) )

FROM NameOrg

LEFT OUTER JOIN dbDoc ON NameOrg.id=dbDoc.id_NameOrg

и чуть ниже введите заголовки для таблицы
Наименование,Количество запросов,Кол-во разрешений,Кол-во отказов,Кол-во Рассмотрений

Dmitry.

Re: Вопрос по выборке (SQL)

Спасибо, Дмитрий, то что надо.