Конференция "Базы" » сложная выборка [D7, FB2.0]
 
  • belmol (28.11.08 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 © (28.11.08 09:05) [1]
    Используй
    CASE (в mssql в fb наверное тоже), SUM, GROUP BY
  • Сергей М. © (28.11.08 09:27) [2]
    Какое поле 2-й таблицы является втор.ключем  ?
  • Виталий Панасенко (28.11.08 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
  • Кщд (28.11.08 09:46) [4]
    >Виталий Панасенко   (28.11.08 09:39) [3]
    >stas ©   (28.11.08 09:05) [1]
    разумное решение

    в Вашем варианте: на каждую запись таблицы 1 - четыре скана таблицы 2(и хорошо ещё, если по индексу) - это правильно?
  • Виталий Панасенко (28.11.08 11:02) [5]
    предложите другой.. я не думаю, что связанных по ID данных - миллионы.. если так, то тогда переписать в EXECUTE BLOCK.. хотя.. все равно ведь суммы как-то считать нужно
  • stas © (28.11.08 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

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

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

    да
  • belmol (28.11.08 12:21) [8]
    СПАСИБО)
 
Конференция "Базы" » сложная выборка [D7, FB2.0]
Есть новые Нет новых   [134477   +39][b:0][p:0.001]