Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Вниз

Супер сложный запрос :)   Найти похожие ветки 

 
Serg2002   (2002-09-12 10:30) [0]

Есть две таблицы Т1 и Т2.

Первая таблица
TN – табельный номер
SUMA1 - сума начислений

Вторая таблица
TN – табельный номер
SUMA2 - сума удержаний

TN в каждой таблице не уникальный. Есть по нескольку одинаковых TN и соответственно сумма начислений или удержаний.
Та вот надо сделать запросик чтобы по каждому TN просуммировать начисления и удержания и еще найти разницу.
Что-то в роде.
select t1.tn, sum(t1.suma1) as nach, sum(t2.suma2) as uder, sum(t1.suma1)-sum(t2.suma2) as opl
from t1, t2
where t1.tn=t2.tn
group by t1.tn, t2.tn

Но результат получается неправильний. Или совсем не получается.
Использовать хранимые процедуры в IB нельзя. Запретили.


 
Max Zyuzin   (2002-09-12 10:51) [1]

Ну первая же ошибка которую видно
group by t1.tn, t2.tn
У тебя поле t2.nt не присутствует в списке выбиваемых полей.. странно что оно вообще работало


 
REA   (2002-09-12 10:52) [2]

Если значения некоторых полей NULL, то парадоксовый SQL будет игнорировать эти записи. Насчет IB не в курсе. Попробуй разбить на части и конкретезировать место ошибки.


 
ЮЮ   (2002-09-12 10:57) [3]

select * from
(select tn nachtn, Sum(suma1) snach from t1 group by tn) nach
full join
(select tn udertn, Sum(suma2) suder from t2 group by tn) uder
on nachtn=udertn



 
Melov   (2002-09-12 10:59) [4]

Мне кажется надо так:

SELECT nach, uder, nach-uder
FROM
( select SUM(Summa1) as nach from T1 group by TN ) A
OUTER JOIN
( select SUM(Summa2) as uder from T2 group by TN ) B
ON A.TN = B.TN


 
Max Zyuzin   (2002-09-12 11:00) [5]

>ЮЮ ©
Если я ничего не путаю.. то в Paradox-е селекты из селектов не работают.


 
ЮЮ   (2002-09-12 11:03) [6]

В дополнение, у меня синтаксис МS SQL.
В качестве пояснения. Начисления и удержания должны считаться в отдельных запросах, иначе неизбежно многогратное включение одного и того же начислени (удержания) в результирующую выборку


 
Max Zyuzin   (2002-09-12 11:07) [7]

select * from (select * from mytable)
Такая конструкция не работает ни в Paradox ни в IB


 
elektro   (2002-09-12 11:22) [8]

>Использовать хранимые процедуры в IB нельзя. Запретили.
Это почему же ? С ней как раз все и получится.


 
ЮЮ   (2002-09-12 11:23) [9]

>ни в Paradox ни в IB
А говрят IB - Cepвер !!!
Тогда рез-ты подзапросов -> во временные таблицы.
А такое IB хотя бы поддерживает?
select * from
"nach.sql" nach
full join
"uder.sql" uder
on nachtn=udertn


 
Johnmen   (2002-09-12 11:25) [10]

SELECT A1.TN,
(SELECT SUM(A2.SUMA1) FROM T1 A2 WHERE A1.TN=A2.TN) F2,
(SELECT SUM(A3.SUMA2) FROM T2 A3 WHERE A1.TN=A3.TN) F3
FROM T1 A1
GROUP BY A1.TN

F2-начисления, F3-удержания

Работает железно в IB...Но один нюанс - если для какого-то ТН есть удержания, но нет начислений, то этот ТН в выборку не попадет (естественно)...


 
ЮЮ   (2002-09-12 11:32) [11]

>если для какого-то ТН есть удержания, но нет начислений, то этот ТН в выборку не попадет (естественно)...

Что же здесь естественного? И почему не попадет?


 
Johnmen   (2002-09-12 11:36) [12]

>ЮЮ © (12.09.02 11:32)

Предлагаю подумать самому....:^)))


 
ЮЮ   (2002-09-12 11:43) [13]

Johnmen © (12.09.02 11:36) Понял :-)


 
Serg2002   (2002-09-12 12:54) [14]

>Johnmen © (12.09.02 11:25)

Етот вариант пока полностью устраивает.
Спасибо!

SELECT A1.TN,
(SELECT SUM(A2.SUMA1) FROM T1 A2 WHERE A1.TN=A2.TN) F2,
(SELECT SUM(A3.SUMA2) FROM T2 A3 WHERE A1.TN=A3.TN) F3
FROM T1 A1
GROUP BY A1.TN





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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
1-8057
vich
2002-09-22 16:44
2002.10.03
Как сделать чтобы программа отображала русские знаки?


1-8028
Porolonchick
2002-09-20 16:07
2002.10.03
TreeView.


6-8090
phantom_17
2002-07-29 12:31
2002.10.03
Запуск прог.


3-7829
Alex-kosmonavt
2002-09-12 15:24
2002.10.03
TQuery добавление записи с использованием SQL


6-8105
Leny
2002-08-01 13:52
2002.10.03
Почему клиент не получает сообщение?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский