Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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(*), но дело не в нем.

Как победить, чтобы не делать промежуточную базу?
Хотя скорее всего так и придется... :(


 
Desdechado   (2001-12-07 11:23) [1]

BDE тут ни причем. Это совершенно правильное поведение, описанное в стандарте SQL. А вот Fox использует (придумал?) какой-то недоSQL со своими приколами


 
WildWind   (2001-12-07 13:25) [2]

Вот она, сила привычки... ;)

Значит в лоб никак? Надо промежуточную базу создавать?


 
Alexandr   (2001-12-07 15:03) [3]

2 строки и должно быть
хочешь одной строкой (т.е. объединить однаковые стери слово all, остальное оставь) и будет тебе счастье


 
asafr   (2001-12-07 16:13) [4]

Действительно, используй не UNION ALL, а просто UNION


 
WildWind   (2001-12-07 17:49) [5]

Убирал я ALL из UNION... а счастья так и нет.

Похоже, что Desdechado прав, но уж больно неуклюжая конструкция выходит. Как-то нелогично...


 
Dim666   (2001-12-07 18:01) [6]

А ты его в такую штуку оберни:


SELECT DISTINCT *
FROM (



)

:)


 
WildWind   (2001-12-10 09:35) [7]

2Dim666
Эта мысль была у меня самой первой ;)
Изящно, но не работает! :(



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.01.10;
Скачать: [xml.tar.bz2];

Наверх















Память: 0.83 MB
Время: 0.022 c
4-28553
Евгений
2001-11-07 15:11
2002.01.10
Как ограничить доступ к каталогам для пользователей?


1-28452
Lis
2001-12-20 14:51
2002.01.10
MemoryManager & MMX


6-28513
dimen
2001-10-15 02:19
2002.01.10
исходник копмпоненты http или как организовать его...


1-28476
Пл.
2001-12-22 09:42
2002.01.10
SaveDialog


3-28440
Сержик
2001-12-06 13:06
2002.01.10
Как узнать высоту frMemoView после подстановки в них данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский