Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подставить в таблицу количество записей с пустой датой / 17 сообщений из 17, страница 1 из 1
14.08.2017, 20:08
    #39505277
frato
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
В таблицу категорий выбираю категории и количество записей таблицы дел с пустой датой в каждой категории.
Всё работает, но если таковых записей нет, то категория не выводится вообще.
А нужно, чтобы в таких случаях у категории стоял "ноль".
Делаю так:
Код: pascal
1.
2.
3.
4.
SELECT kats.N,kats.kat,COUNT(tasks.N) AS itog FROM tasks
LEFT JOIN kats ON kats.N=tasks.kat
WHERE tasks.date2 IS NULL
GROUP BY kats.N,kats.kat


При таком запросе напротив каждой категории указано, сколько по ней есть записей с пустой датой.
Но те категории, по которым нет ни одной записи с пустыми датами, не попадают в выборку.
Как сделать, чтобы попадали, подскажите, пожалуйста.
Делаю на Делфи с базой mdb.
...
Рейтинг: 0 / 0
15.08.2017, 07:44
    #39505355
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
Измените порядок связывания таблиц:
Код: sql
1.
2.
FROM kats
LEFT JOIN tasks
...
Рейтинг: 0 / 0
15.08.2017, 08:26
    #39505367
frato
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
AkinaИзмените порядок связывания таблиц:
Код: sql
1.
2.
FROM kats
LEFT JOIN tasks


Так в выборку попадает общее число записей в каждой категории, а нужно число строк у которых есть пустая дата.
Если я в самом низу добавляю условие:
Код: pascal
1.
where tasks.date2 is null


то категории, по которым нет пустых дат не попадают в выборку.
...
Рейтинг: 0 / 0
15.08.2017, 08:52
    #39505380
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
fratoТак в выборку попадает общее число записей в каждой категории, а нужно число строк у которых есть пустая дата.Предполагалось, что будет изменена только секция FROM, а другие секции, в т.ч. и WHERE, не будут затронуты.
...
Рейтинг: 0 / 0
15.08.2017, 09:27
    #39505401
Подставить в таблицу количество записей с пустой датой
Код: sql
1.
2.
3.
SELECT kats.N,kats.kat, SUM(IIF(tasks.date2 IS NULL, 1, 0)) AS itog FROM tasks
LEFT JOIN kats ON kats.N=tasks.kat
GROUP BY kats.N,kats.kat
...
Рейтинг: 0 / 0
15.08.2017, 09:56
    #39505429
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
Анатолий ( Киев ) , Вот какой смысл оставлять tasks слева, если по ней считается ТОЛЬКО количество?
...
Рейтинг: 0 / 0
15.08.2017, 10:20
    #39505448
frato
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
Вроде то, что нужно, по идее должно работать.
Но в моём случае вызвало ошибку: Syntax error in From clause.
Буду копать, экспериментировать.
Спасибо!
...
Рейтинг: 0 / 0
15.08.2017, 10:40
    #39505461
frato
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
Akina Анатолий ( Киев ) , Вот какой смысл оставлять tasks слева, если по ней считается ТОЛЬКО количество?
А как бы Вы предложили?
...
Рейтинг: 0 / 0
15.08.2017, 10:48
    #39505464
Подставить в таблицу количество записей с пустой датой
Akina Анатолий ( Киев ) , Вот какой смысл оставлять tasks слева, если по ней считается ТОЛЬКО количество? Согласен. Я туда и не глянул.
Код: sql
1.
2.
3.
SELECT kats.N,kats.kat, SUM(IIF(tasks.date2 IS NULL, 1, 0)) AS itog FROM kats
LEFT JOIN tasks ON kats.N=tasks.kat
GROUP BY kats.N,kats.kat
...
Рейтинг: 0 / 0
15.08.2017, 11:22
    #39505475
frato
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
О! Теперь заработало!
Всем большое спасибо!
...
Рейтинг: 0 / 0
15.08.2017, 11:43
    #39505486
frato
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
Всплыла ещё одна особенность этого запроса:
если какой-то категории в списке дел вообще нет, то запрос напишет, что в этой категории одно дело, а не ноль.
...
Рейтинг: 0 / 0
15.08.2017, 11:52
    #39505494
Подставить в таблицу количество записей с пустой датой
fratoВсплыла ещё одна особенность этого запроса:
если какой-то категории в списке дел вообще нет, то запрос напишет, что в этой категории одно дело, а не ноль.
Код: plsql
1.
SUM(IIF((tasks.kat IS NOT NULL) AND (tasks.date2 IS NULL), 1, 0))
...
Рейтинг: 0 / 0
15.08.2017, 11:52
    #39505495
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
frato , Вы всё-таки упорно [censored]...
fratoДелаю так:
Код: sql
1.
2.
3.
4.
SELECT kats.N,kats.kat,COUNT(tasks.N) AS itog FROM tasks
LEFT JOIN kats ON kats.N=tasks.kat
WHERE tasks.date2 IS NULL
GROUP BY kats.N,kats.kat


Сделайте так, как я говорил 20723791 ещё в начале темы:
Код: sql
1.
2.
3.
4.
5.
SELECT kats.N,kats.kat,COUNT(tasks.N) AS itog 
>>>FROM kats 
LEFT JOIN tasks<<< ON kats.N=tasks.kat
WHERE tasks.date2 IS NULL
GROUP BY kats.N,kats.kat

[/quote]
...
Рейтинг: 0 / 0
15.08.2017, 11:53
    #39505496
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
Блин.
Код: sql
1.
2.
3.
4.
5.
SELECT kats.N,kats.kat,COUNT(tasks.N) AS itog 
FROM kats 
LEFT JOIN tasks ON kats.N=tasks.kat
WHERE tasks.date2 IS NULL
GROUP BY kats.N,kats.kat
...
Рейтинг: 0 / 0
15.08.2017, 12:01
    #39505506
frato
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
А если так, то не попала категория, по которой у всех дел есть дата.
Но я сейчас нашёл для себя рабочий вариант, я сделал так:
У меня там есть ещё один признак: выполнено дело или нет. Получилось так:
Код: pascal
1.
2.
3.
SELECT kats.N,kats.kat, SUM(IIF(vip=FALSE, 1, 0)) AS itog FROM kats
LEFT JOIN tasks ON kats.N=tasks.kat
GROUP BY kats.N,kats.kat


Всем спасибо!
...
Рейтинг: 0 / 0
15.08.2017, 12:46
    #39505555
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
fratoне попала категория, по которой у всех дел есть дата
Тогда переместить условие отбора в секцию условий связывания:
Код: sql
1.
2.
3.
4.
5.
SELECT kats.N,kats.kat,COUNT(tasks.N) AS itog 
FROM kats 
LEFT JOIN tasks ON kats.N=tasks.kat
               AND tasks.date2 IS NULL
GROUP BY kats.N,kats.kat
...
Рейтинг: 0 / 0
15.08.2017, 14:14
    #39505615
frato
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подставить в таблицу количество записей с пустой датой
О, последний вариант правильно отработал, только ещё пришлось скобки добавить, без них ошибка была.
Со скобками получилось так:
Код: plsql
1.
2.
3.
4.
5.
SELECT kats.N,kats.kat,COUNT(tasks.N) AS itog
FROM kats
LEFT JOIN tasks ON ((kats.N=tasks.kat)
AND (tasks.date2 IS NULL))
GROUP BY kats.N, kats.kat


А мой вариант с IIF(vip=FALSE... оказался ошибочным, не всё выбирал.
Спасибо!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подставить в таблицу количество записей с пустой датой / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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