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

Вниз

запрос SQL   Найти похожие ветки 

 
rosl   (2007-04-23 03:33) [0]

Уважаемые мастера, подскажите пожалуйста.
есть таблицы:
shet
id_key   number_shet    data_shet
  1             1               01.01.2007  
shet_link
cena     shet_link
75            1
200           1
spisanie
summa  shet_fakt
100          1
9,87         1
нужно сделать запрос, какая сумма по счёту и сколько списано:
делаю запрос:
select shet.NUMBER_SHET, shet.DATE_SHET, sum(lnk.CENA), sum(opl.SUMMA)
from SHETS shet, SHET_LINK lnk,  SPISANIE opl

where lnk.LINK_SHET = shet.ID_KEY
and opl.SHET_FAKT = shet.ID_KEY

group by shet.NUMBER_SHET, shet.DATE_SHET

результат:
number_shet    data_shet       cena          summa
   1               01.01.2007       550            219.74

суммы задваиваются. нужно:
number_shet    data_shet       cena          summa
   1               01.01.2007       275           109,87


 
ЮЮ ©   (2007-04-23 04:53) [1]

в запросах главное не [D7, XP], а СУБД и компоненты доступа, т.к. в рамках элементарного и поддерживаемого всеми синтаксиса SQL задачу, ИМХО, не решить: агрегатные запросы надо делать отдельно к SHET_LINK и SPISANIE, а затем соединять в один набор


 
rosl   (2007-04-23 05:04) [2]

в форме вопроса нет типа СУБД.
использую Ibase7.
если можно, то поподробнее про "агрегатные запросы надо делать отдельно к SHET_LINK и SPISANIE, а затем соединять в один набор". если несложно, к этим данным запрос.
я делал CREATE VIEW. может есть способ проще?


 
rosl   (2007-04-23 05:05) [3]

компоненты доступа обыкновенные IBQuery1


 
rosl   (2007-04-23 10:15) [4]

разобрался - CREATE VIEW


 
Sergey13 ©   (2007-04-23 10:21) [5]

> [4] rosl   (23.04.07 10:15)

Я не особо въехал в твою структуру. Возможно несколько ее видоизменив можно избавиться от ошибки (непонятной какой то).
В качестве шаманства можно попробовать связать по другому таблицы.
where lnk.LINK_SHET = shet.ID_KEY and opl.SHET_FAKT = lnk.LINK_SHET


 
ЮЮ ©   (2007-04-23 11:32) [6]

> [5] Sergey13 ©   (23.04.07 10:21)

Как ни связывай, если в ожной подчиненной таблице N записей, а во второй - M, при связи главной таблицы с двумя подчиненными получим M x N записей, т.е. сумма по первой таблице будет в M раз больше ожидаемой, а по второй - в N.
P.S. В принципе ожидаемое увеличение можно посчитать и разделить полученную сумму на него


 
Sergey13 ©   (2007-04-23 11:55) [7]

> [6] ЮЮ ©   (23.04.07 11:32)

Да действительно. Ни разу не сталкивался.
Тогда только так
select t1.id,
(select sum(t2.f2) from t2 where t2.id = t1.id) as Sum1,
(select sum(t3.f2) from t3 where t3.id = t1.id) as Sum2
from t1


 
rosl   (2007-04-23 15:03) [8]

может воспользуюсь советом Sergey13 ©.
я просто создал два представления, а потом вытянул оттуда уже сгруппированные данные.
вложенные запросы пробовал делать (типа select ... (select...)), но IB ругался. Скорее всего неправильно что-то писал (учусь).
Всё равно, ОГРОМНОЕ спасибо за помощь.



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

Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
15-1175593101
=Guest=
2007-04-03 13:38
2007.05.13
Литература по delphi


2-1176976563
npu3pak
2007-04-19 13:56
2007.05.13
Запись в лог-файл из TMemo


15-1176656395
palva
2007-04-15 20:59
2007.05.13
Российский флаг


2-1177143314
Roman_S
2007-04-21 12:15
2007.05.13
как отображать процесс копирования КАТАЛОГОВ


11-1159283659
Моторокер
2006-09-26 19:14
2007.05.13
Int2Str vs. IntToStr





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