Форум: "Базы";
Текущий архив: 2002.01.10;
Скачать: [xml.tar.bz2];
Внизлюбопытное поведение union all в SQL через BDE... Найти похожие ветки
← →
WildWind (2001-12-07 10:48) [0]Динамически формирую запрос. Получаю:
select nt, count(*) as cnt, sum(pr) as sum_pr, sum(sm)/100 as sum_sm
from "base_1.dbf" a
where (a.nt=4200)
group by nt
union all
select nt, count(*) as cnt, sum(pr) as sum_pr, sum(sm)/100 as sum_sm
from "base_2.dbf" a
where (a.nt=4200)
group by nt
order by nt
Мало того, что этот диалект требует, чтобы where был именно
после from (т.е. до group и order), так он еще и обрабатывается хитро!
По идее (и, например, в FoxPro так и есть) должна получиться одна строка, где nt=6044200 и дальше как заказывали. Но эта гадина выдает количество строк столько, сколько раз будет union all (в данном примере - две). Т.е. при включении в запрос еще одной базы по union я получаю уже 3 строки. Грешил на count(*), но дело не в нем.
Как победить, чтобы не делать промежуточную базу?
Хотя скорее всего так и придется... :(
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.01.10;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.003 c