Конференция "Базы" » Как заставить IBQuery или OraQuery вернуть пустой результат
 
  • alexnauz © (21.06.10 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 © (21.06.10 13:43) [1]

    > alexnauz ©   (21.06.10 13:25)  

    Сделать можно. С исп. доп. таблицы, с UNION или ХП.
    Но лучше сделать что бы при использовании Query.Next текущий результат не казался ерундой.
  • Плохиш © (21.06.10 14:35) [2]

    > В результате при попытке заполнения таблицы в цикле, где
    > используется Query.Next получаю ерунду.

    Проблема написать одно условие сравнения?
  • Вариант (21.06.10 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 © (21.06.10 14:52) [4]
    Не проблема включить в цикл изменяемый Query, но описанным выше одним запросом, куда реально входило с десяток всяких sum, целиком заполнялась отчётная таблица и всё прекрасно работало пока не встретилось пустое значение. Написать условие сравнения вполне возможно, но в программе считается семь разных таблиц подобным способом, значит условия сравнения надо писать во всех случаях, причём, учитывая что в программе возможно задавать период счёта (за месяц, за квартал, за год, с марта по ноябрь и т. п.), то условие сравнения выливается не в одну строку текста. Конечно, число строк не пугает, но тогда проще включить в цикл изменяемый Query.
 
Конференция "Базы" » Как заставить IBQuery или OraQuery вернуть пустой результат
Есть новые Нет новых   [134433   +22][b:0][p:0.001]