Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вывести пустые поля если есть условие? / 25 сообщений из 34, страница 1 из 2
18.05.2016, 06:40
    #39237839
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
имеется три таблицы, по которым мне нужно сделать запрос. Если без условия по дате, то выводит соответственно все поля. А если с условием то выводит не все поля.
Мне необходимо чтобы из таблицы GRUPPA выводились все поля, сумма Col_uved на конкретную дату, а те поля где нет Col_uved выводились пустыми.
...
Рейтинг: 0 / 0
18.05.2016, 06:40
    #39237840
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
...
Рейтинг: 0 / 0
18.05.2016, 06:41
    #39237841
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
...
Рейтинг: 0 / 0
18.05.2016, 08:16
    #39237858
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
DQuasar,

а mdb файл с тремя таблицами слабо было прикрепить? Вот сейчас кто-то намалюет тебе эскиз (возможно и правильный), но ошибется в одной букве, а потом ты будешь говорить - проверил, не работает...
...
Рейтинг: 0 / 0
18.05.2016, 09:01
    #39237880
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
DQuasarЕсли без условия по дате, то выводит соответственно все поля. А если с условием то выводит не все поля.
Бредятина. Список полей выходного набора в принципе не может зависеть от наличия или отсутствия условия.
DQuasarМне необходимо чтобы из таблицы GRUPPA выводились все поля, сумма Col_uved на конкретную дату, а те поля где нет Col_uved выводились пустыми.
Код: vbnet
1.
WHERE field = #value# OR field IS NULL
...
Рейтинг: 0 / 0
19.05.2016, 07:20
    #39238729
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Вот такой результат получить возможно ли????
...
Рейтинг: 0 / 0
19.05.2016, 07:24
    #39238731
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Вот файл ДБ
...
Рейтинг: 0 / 0
19.05.2016, 08:08
    #39238735
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
...
Рейтинг: 0 / 0
19.05.2016, 08:10
    #39238736
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
...
Рейтинг: 0 / 0
19.05.2016, 15:24
    #39239199
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
simply,

Здесь задваиваются name_gr и нет временных сооружений. Должно быть так - если на эту дату есть какие либо значения, то выводить сумму, если же нет, то хотя бы выводить ноль.
т.е. запрос должен содержать всего 5 строк, ровно столько строк, сколько в таблице GRUPPA, а в столбцах в зависимости от даты сумма либо пустое (или ноль)
...
Рейтинг: 0 / 0
19.05.2016, 17:10
    #39239395
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Решение очевидно. Справочник ВСЕХ работ + дата + ЛЕФТ джоин группировка записей какие фактически есть.
...
Рейтинг: 0 / 0
19.05.2016, 17:48
    #39239433
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
...
Рейтинг: 0 / 0
19.05.2016, 21:12
    #39239545
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT Sum(UVED.col_uved) AS [Sum-col_uved], UVED.data_uved, GRUPPA.name_gr
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
WHERE UVED.data_uved=#4/30/2016#
GROUP BY GRUPPA.name_gr, UVED.data_uved
UNION ALL
SELECT Null, #4/30/2016#, GRUPPA.name_gr
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
WHERE GRUPPA.cod_gr NOT IN 
(SELECT GRUPPA.cod_gr FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem WHERE UVED.data_uved=#4/30/2016#);

Sum-col_uveddata_uvedname_gr4 30.04.2016 Благоустройство2 30.04.2016 Земляные работы2 30.04.2016 Реклама3 30.04.2016 Торговля 30.04.2016 Временные сооружения
...
Рейтинг: 0 / 0
19.05.2016, 21:21
    #39239552
Как вывести пустые поля если есть условие?
__Michelle,

Благоустройство
Земляные работы
Реклама
Торговля
Временные сооружения


Реально ведь - сетевой график коммерческого кладбища у ТС склеивается ...

Извините. У меня сегодня мрачнуха прет. Но так ведь?!
.
...
Рейтинг: 0 / 0
19.05.2016, 21:30
    #39239558
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Там еще другие числа: 28 и 29
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT Sum(UVED.col_uved) AS [Sum-col_uved], UVED.data_uved, GRUPPA.name_gr
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
WHERE UVED.data_uved=#4/29/2016#
GROUP BY GRUPPA.name_gr, UVED.data_uved
UNION ALL
SELECT Null, #4/29/2016#, GRUPPA.name_gr
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
WHERE GRUPPA.cod_gr NOT IN 
(SELECT GRUPPA.cod_gr FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = [SRC HTML]UVED.cod_tem WHERE UVED.data_uved=#4/29/2016#);



Если 29 то результат такой:
Код: xml
1.
2.
3.
4.
5.
6.
7.
Sum-col_uved	data_uved	name_gr
5	29-апр-16	Реклама
	29-апр-16	Торговля
	29-апр-16	Земляные работы
	29-апр-16	Земляные работы
	29-апр-16	Благоустройство
	29-апр-16	Временные сооружения
...
Рейтинг: 0 / 0
19.05.2016, 21:33
    #39239561
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
капча-трава-я-не-робот,

А ведь точно.
Там среди тем есть "Разрытие без ордера", "Урна"...
А-а-а-а....
...
Рейтинг: 0 / 0
19.05.2016, 21:38
    #39239563
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Код: vbnet
1.
2.
3.
4.
SELECT GRUPPA.name_gr, Sum(IIf([data_uved]=#4/29/2016#,[col_uved],0)) AS col_uved_, First(IIf([data_uved]=#4/29/2016#,[data_uved],#4/29/2016#)) AS data_uved_
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
GROUP BY GRUPPA.name_gr
HAVING (((First(IIf([data_uved]=#4/29/2016#,[data_uved],#4/29/2016#)))=#4/29/2016#));
...
Рейтинг: 0 / 0
19.05.2016, 22:07
    #39239572
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
simplyТам еще другие числа: 28 и 29
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT Sum(UVED.col_uved) AS [Sum-col_uved], UVED.data_uved, GRUPPA.name_gr
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
WHERE UVED.data_uved=#4/29/2016#
GROUP BY GRUPPA.name_gr, UVED.data_uved
UNION ALL
SELECT Null, #4/29/2016#, GRUPPA.name_gr
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
WHERE GRUPPA.cod_gr NOT IN 
(SELECT GRUPPA.cod_gr FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = [SRC HTML]UVED.cod_tem WHERE UVED.data_uved=#4/29/2016#);



Если 29 то результат такой:
Код: xml
1.
2.
3.
4.
5.
6.
7.
Sum-col_uved	data_uved	name_gr
5	29-апр-16	Реклама
	29-апр-16	Торговля
	29-апр-16	Земляные работы
	29-апр-16	Земляные работы
	29-апр-16	Благоустройство
	29-апр-16	Временные сооружения

Да, правильно. Нужен еще один DISTINCT
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT Sum(UVED.col_uved) AS [Sum-col_uved], UVED.data_uved, GRUPPA.name_gr
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
WHERE UVED.data_uved=#4/29/2016#
GROUP BY GRUPPA.name_gr, UVED.data_uved
UNION ALL 
SELECT DISTINCT Null, #4/29/2016#, GRUPPA.name_gr
FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem
WHERE GRUPPA.cod_gr NOT IN 
(SELECT DISTINCT GRUPPA.cod_gr FROM (GRUPPA LEFT JOIN TEMA ON GRUPPA.cod_gr = TEMA.cod_gr) LEFT JOIN UVED ON TEMA.cod_tem = UVED.cod_tem WHERE UVED.data_uved=#4/29/2016#);

Sum-col_uved data_uved name_gr5 29.04.2016 Реклама 29.04.2016 Благоустройство 29.04.2016 Временные сооружения 29.04.2016 Земляные работы 29.04.2016 Торговля Примечание : это здесь, на форуме, Sum-col_uved почему-то выравнивается как текст,
на самом деле выравнивается как число.
...
Рейтинг: 0 / 0
19.05.2016, 22:32
    #39239585
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Топик почищен
...
Рейтинг: 0 / 0
24.05.2016, 15:34
    #39242403
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
simply, спасибо. Ваш ответ мне очень помог.

Стараюсь добавить еще несколько таблиц. Но получается только когда добавляешь вместе с количеством еще и дату. Запрос при этом получается очень объемным, много лишних столбцов с датами получается. Можно ли как то упростить запрос? или БД корявая?
...
Рейтинг: 0 / 0
24.05.2016, 15:35
    #39242405
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
...
Рейтинг: 0 / 0
24.05.2016, 18:26
    #39242640
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
DQuasarsimply, спасибо. Ваш ответ мне очень помог.

Стараюсь добавить еще несколько таблиц. Но получается только когда добавляешь вместе с количеством еще и дату. Запрос при этом получается очень объемным, много лишних столбцов с датами получается. Можно ли как то упростить запрос? или БД корявая?
На счет "корявости" базы, не знаю, особенно не вникал. Вы просили помощи по конкретным задачам, я их решал, повторюсь, не вникая в общую суть. Скорее всего в структуре не все в порядке, коль с самого начала приходится изгаляться с запросами.
Попробуйте, своими словами, описать задачу, которую вам необходимо решить с помощью базы.
Да, из последнего вашего сообщение, я вообще ничего не понял, что вы хотите.
...
Рейтинг: 0 / 0
24.05.2016, 18:37
    #39242647
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Если вам нужно видеть только два столбца, то можно остальные просто скрыть (если я все таки правильно понял)
...
Рейтинг: 0 / 0
24.05.2016, 20:13
    #39242699
DQuasar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
simply,

суть в следующем. Несколько специалистов, каждый из них каждый день может выдать предписания, уведомления, составить протоколы, а может и не составить. Все это может быть на разные темы. Тем может быть очень много, а темы в свою очередь делятся на 5 групп (может быть +-2).

От БД нужен количественный учет по каждому специалисту, теме, группе и т.д.
От запроса нужно чтобы он по каждой группе считал количество уведомлений, протоколов, предписаний и т.д. за определенный период/дату.

Прикрепляю пример итоговой таблицы (отчета) в Excel. Спасибо заранее...
...
Рейтинг: 0 / 0
25.05.2016, 00:55
    #39242794
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пустые поля если есть условие?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT name_gr AS Группа, #04/29/2016# AS Дата, Протоколы, Уведомления, Предписания
FROM GRUPPA INNER JOIN 
(SELECT cod_gr, Sum(C*(V=1)*(D=#04/29/2016#)) AS Уведомления, Sum(C*(V=2)*(D=#04/29/2016#)) AS Предписания, Sum(C*(V=3)*(D=#04/29/2016#)) AS Протоколы
FROM (SELECT V, cod_gr, C, D 
FROM TEMA LEFT JOIN
(SELECT 1 AS V, UVED.cod_tem AS T, UVED.col_uved AS C, UVED.data_uved AS D FROM UVED
UNION ALL
SELECT 2, PRED.cod_tem, PRED.col_pred, PRED.data_pred FROM PRED
UNION ALL 
SELECT 3, PROT.cod_tem, PROT.col_prot, PROT.data_prot FROM PROT) AS Q
ON TEMA.cod_tem=Q.T) AS QQ
GROUP BY cod_gr) AS QQQ ON GRUPPA.cod_gr=QQQ.cod_gr
ORDER BY name_gr;

Группа Дата Протоколы Уведомления ПредписанияБлагоустройство 29.04.2016 0 0 0Временные сооружения 29.04.2016 0 0 0Земляные работы 29.04.2016 0 0 0Реклама 29.04.2016 2 5 1Торговля 29.04.2016 1 0 0
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вывести пустые поля если есть условие? / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]