Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.11;
Скачать: CL | DM;

Вниз

сложная выборка   Найти похожие ветки 

 
belmol   (2008-11-28 07:56) [0]

Доброго времени суток,
ситуация следующая: есть 2 таблицы 1- список договоров, 2 список счетов по данным договорам
1: id| name_org|date_in|          2: id|cash1 |cash2|vector

одной записи таблицы 1 соответствует несколько записей 2-й таблице, в гриде мне надо получить:
id|name_org|date_in|(сумма (cash1)где vector=0)-(сумма (cash1)где vector=1)|(сумма (cash2)где vector=0)-(сумма (cash2)где vector=1)
ну е выходит запрос. всю голову сломал(( видимо не хватает чего то в голове.


 
stas ©   (2008-11-28 09:05) [1]

Используй
CASE (в mssql в fb наверное тоже), SUM, GROUP BY


 
Сергей М. ©   (2008-11-28 09:27) [2]

Какое поле 2-й таблицы является втор.ключем  ?


 
Виталий Панасенко   (2008-11-28 09:39) [3]

Используй подзапросы
Select id,name_org,...,(select sum(cash1) from tab t1 where vector=0 and t1.id=t.id)-(select sum(cash1) from tab t1 where vector=1 and t1.id=t.id) и т.д.
from tab t


 
Кщд   (2008-11-28 09:46) [4]

>Виталий Панасенко   (28.11.08 09:39) [3]
>stas ©   (28.11.08 09:05) [1]
разумное решение

в Вашем варианте: на каждую запись таблицы 1 - четыре скана таблицы 2(и хорошо ещё, если по индексу) - это правильно?


 
Виталий Панасенко   (2008-11-28 11:02) [5]

предложите другой.. я не думаю, что связанных по ID данных - миллионы.. если так, то тогда переписать в EXECUTE BLOCK.. хотя.. все равно ведь суммы как-то считать нужно


 
stas ©   (2008-11-28 11:12) [6]

Не пойму в чем сложность?
Я напишу в синтаксисе MSSQL т.к. незнаю FB.
на FB наверное также решается.

Select table1.id, name_org,date_in,
sum (case when vector=0 then cash1 end)-sum(case when vector=1 then cash1 end) as summa1,
sum (case when vector=0 then cash2 end)-sum(case when vector=1 then cash2 end) as summa2
From tbal1 inner join table2 on table1.id=table2.id
group by table1.id, name_org,date_in


 
Виталий Панасенко   (2008-11-28 11:17) [7]


> stas ©   (28.11.08 11:12) [6]

да


 
belmol   (2008-11-28 12:21) [8]

СПАСИБО)



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

Текущий архив: 2009.10.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
15-1249737117
alex649
2009-08-08 17:11
2009.10.11
алгоритм кластеризации ISODATA


3-1227857279
АндрейВладимирович
2008-11-28 10:27
2009.10.11
Ограничение списка автофильтра в cxGrid


4-1219228987
POP
2008-08-20 14:43
2009.10.11
Интересный баг с COM портом.


15-1249934148
syteser78
2009-08-10 23:55
2009.10.11
У кого нибуть из вас воровали почтовый ящик?


15-1249641398
Cyrax
2009-08-07 14:36
2009.10.11
Почему многие интернет-магазины не принимают электронные деньги ?