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

Вниз

Проблема с запросом   Найти похожие ветки 

 
VadimSpb   (2005-12-28 10:16) [0]

Добрый день!
Подскажите, как составить запрос.
1. Есть таблица с полями "Дата" и "Платеж". Надо получить НД с полями "Дата" и "Сумма всех платежей внесенных до этой даты"
2. Есть таблица с полями "Дата подключения" и "Дата отключения". Надо получить НД с Общим кол-вом абонентов на дату, число подключенных и число отключенных на дату.

Если возможно киньте примерчик с аналогичными вариантами.


 
Johnmen ©   (2005-12-28 10:28) [1]

Вопросы поставлены некоорректно. Отсутствует группирующий признак, т.е. кем внесены платежи, например.
Для полной формализации вопроса просто приведи пример исходных данных и пример НД, который надо получить.


 
Lexer ©   (2005-12-28 10:32) [2]

1. Есть таблица с полями "Дата" и "Платеж". Надо получить НД с полями "Дата" и "Сумма всех платежей внесенных до этой даты"
Вопрос немного недопонял, если надо вывести все значения поля Дата из таблицы и на каждое значение подсчитать сумму то можно так:
SELECT T.date,
   (SELECT SUM(TS.pay)
    FROM TABLE TS
    WHERE TS.date <= T.DATE) sum_to_date
FROM TABLE T

2. Есть таблица с полями "Дата подключения" и "Дата отключения". Надо получить НД с Общим кол-вом абонентов на дату, число подключенных и число отключенных на дату.
ИМХО лучше всего написать хранимку (конечно если СУБД позволяет), в которой подсчитывать эти три значения след. образом:

SELECT COUNT(T.date_connect),
FROM TABLE T
WHERE T.date_connect IS NOT NULL
AND T.date_connect <= :date_to

SELECT COUNT(T.date_disconnect),
FROM TABLE T
WHERE T.date_disconnect IS NOT NULL
AND T.date_disconnect <= :date_to

count_connect = date_connect - date_disconnect


 
VadimSpb   (2005-12-28 10:46) [3]

Таблица1.
Дата        Платеж  IDАбонента
01.01.2005     100        01
05.01.2005     150        02
07.01.2005     50          03

Надо получить НД:
Дата        Сумма  
01.01.2005     100  
02.01.2005     100        
03.01.2005     100
04.01.2005     100
05.01.2005     250
06.01.2005     250
07.01.2005     300

Таблица 2.
Дата подкл.   Дата откл.    IDАбонента
01.01.2005     03.01.2005    01
05.01.2005     07.01.2005    01
09.01.2005                        01
01.01.2005                        02
03.01.2005                        03

Надо получить НД:
Дата           Всего  Число подкл.   Число откл.
01.01.2005   2        2                   0
02.01.2005   2        2                   0
03.01.2005   3        3                   0
04.01.2005   3        2                   1
05.01.2005   3        3                   0
06.01.2005   3        3                   0
07.01.2005   3        2                   1
08.01.2005   3        2                   1
09.01.2005   3        3                   0


 
Lexer ©   (2005-12-28 10:49) [4]

VadimSpb, СУБД уточнить можно?


 
Виталий Панасенко   (2005-12-28 10:49) [5]

1. select t.date_pay, sum(t.sym_pay) as summa from table t
  where t.date_pay between "date1" and "date2"
  group by t.date_pay


 
Johnmen ©   (2005-12-28 10:52) [6]

Понятно.
Придётся извращаться, чтобы получить в результирующем НД данные, которых нет в источнике. Имеются в виду даты.
Навскидку - создаётся временная таблица с датами, потом выполняется запрос, где будет соединение этой тбл с исходной тбл.


 
VadimSpb   (2005-12-28 10:57) [7]

Придётся извращаться
Вот и стараюсь ... и таблицы временные делал, насколько Access позволяет :-((. Получается очень долго. Записей в первой табл. несколько сот тыс., во второй до 100 тыс.
Все это надо вывести в график. Может все даты и не нужны, а DBChart сам с ними разберется?


 
Johnmen ©   (2005-12-28 11:27) [8]

Сначала попробуй, как будет на существующих датах. Пример Lexer уже привёл.


 
VadimSpb   (2005-12-28 16:21) [9]

VadimSpb, СУБД уточнить можно?
Acces через Jet.


 
VadimSpb   (2005-12-28 16:25) [10]

Виталий Панасенко   (28.12.05 10:49) [5]
1. select t.date_pay, sum(t.sym_pay) as summa from table t
 where t.date_pay between "date1" and "date2"
 group by t.date_pay


Где предполагается взять "date1" and "date2"?


 
ЮЮ ©   (2005-12-29 03:06) [11]

>Где предполагается взять "date1" and "date2"?

Да уж придумай где. Или полагашь, что и в 2007 году кого-то ежедневно будут интересовать твои строки за январь 2005? Более того, чем больше будет "дней" в запросе, тем тяжелее он будет выполняться.



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

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

Наверх




Память: 0.47 MB
Время: 0.049 c
2-1135921876
LionMen
2005-12-30 08:51
2006.01.22
Возврат параметров из хр. процедуры MSSQL


14-1135454736
alex-drob
2005-12-24 23:05
2006.01.22
Разрезать avi


14-1135896255
версия для печати
2005-12-30 01:44
2006.01.22
В бобруйск на зимние каникулы...


4-1131709411
Альф
2005-11-11 14:43
2006.01.22
Определения свободного места на NTFS-диске


2-1136239374
aleccc
2006-01-03 01:02
2006.01.22
перекодировка





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