Форум: "Базы";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизКак заставить IBQuery или OraQuery вернуть пустой результат Найти похожие ветки
← →
alexnauz © (2010-06-21 13:25) [0]Доброго дня. Уважаемые Мастера. Использую для заполнения таблицы запрос типа:
select meszap, count(*) from table
where условие
group by meszap
Такой запрос возвращает значения сгруппированные по месяцу результаты, но если за текущий месяц при заданном условии нет записей, то данный месяц вообще игнорируется в результате, т.е. если за февраль не было записей, то будет выведено:
1 - 5
3 - 4
4 - 6
В результате при попытке заполнения таблицы в цикле, где используется Query.Next получаю ерунду. Можно ли заствить Query вернуть пустой результат т.е.
1 - 5
2 - 0
3 - 4
4 - 6
Александр.
← →
turbouser © (2010-06-21 13:43) [1]
> alexnauz © (21.06.10 13:25)
Сделать можно. С исп. доп. таблицы, с UNION или ХП.
Но лучше сделать что бы при использовании Query.Next текущий результат не казался ерундой.
← →
Плохиш © (2010-06-21 14:35) [2]
> В результате при попытке заполнения таблицы в цикле, где
> используется Query.Next получаю ерунду.
Проблема написать одно условие сравнения?
← →
Вариант (2010-06-21 14:50) [3]
> alexnauz © (21.06.10 13:25)
Если верно понял, проблема в том что нет вообще записей, где например meszap имеет значение 2 (февраль) или еще какое-либо?
В этом случае действительно будут пропущенные значения.
Оракл почти забыл, как и имена его служебных таблиц, столбцов и т.п., но попробую накидать примерный вариант для Ораклаselect T1.M,count(T2.meszap) from
(select rownum as M from ALL_OBJECTS where rownum < 13) T1
LEFT JOIN
TABLE T2 ON T2.meszap=T1.M and <условие>
GROUP BY T1.M
Идея в формировании псевдо стобца T1.M, который имеет все нужные значения (у нас от 1 до 12) и левое объединение его уже с реальным столбцом реальной таблицы
← →
alexnauz © (2010-06-21 14:52) [4]Не проблема включить в цикл изменяемый Query, но описанным выше одним запросом, куда реально входило с десяток всяких sum, целиком заполнялась отчётная таблица и всё прекрасно работало пока не встретилось пустое значение. Написать условие сравнения вполне возможно, но в программе считается семь разных таблиц подобным способом, значит условия сравнения надо писать во всех случаях, причём, учитывая что в программе возможно задавать период счёта (за месяц, за квартал, за год, с марта по ноябрь и т. п.), то условие сравнения выливается не в одну строку текста. Конечно, число строк не пугает, но тогда проще включить в цикл изменяемый Query.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.073 c