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

Вниз

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

 
Maxxx   (2003-05-26 07:15) [0]

Здравствуйте Уважаемые Мастера!
Есть таблица с начислениями абонентов. В ней храниться код абонента, дата начисления, сумма начисления. Как мне получить дату последнего начисления и сумму последнего начисления?

я делаю:
select code, max(date) from table
group by code
получаю список абонентов с последней датой.
Как получить сумму, соответсвующей этой дате?
Спасибо.


 
Наталия   (2003-05-26 07:51) [1]

Может, так:
select my_summ
from table
inner join
(select code, max(date) d from table
group by code) as t
on table.code=t.code and table.date=t.d


 
Maxxx   (2003-05-26 07:58) [2]

А решения без вложенного запроса существуют?


 
Zacho   (2003-05-26 08:57) [3]


> Maxxx (26.05.03 07:15)

Примерно так:
SELECT ... FROM TABLE WHERE DATE=(SELECT MAX(DATE) FROM TABLE)

> Наталия © (26.05.03 07:51)

Насколько мне известно, такой синтаксис IB не поддерживает.

> Maxxx (26.05.03 07:58)

В IB 6.x - нет, разве что хранимой процедурой. А в FB - можно с помощью FIRST.


 
Johnmen   (2003-05-26 10:18) [4]

SELECT A.id, A.s, MAX(B.d)
FROM Table A, Table B
WHERE (A.id=B.id) AND (A.d=(SELECT MAX(C.d) FROM Table C WHERE C.id=A.id))
GROUP BY A.id, A.s


где id - код абонента, s - сумма начисления, d - дата начисления.


 
Zacho   (2003-05-26 10:23) [5]


> Johnmen © (26.05.03 10:18)

А зачем еще и внутренний джоин ?
Имхо, вполне достаточно SELECT * FROM TABLE WHERE D=(SELECT MAX(D) FROM TABLE)


 
Johnmen   (2003-05-26 10:44) [6]

>Zacho © (26.05.03 10:23)
>А зачем еще и внутренний джоин ?

Просто попробуй написать запрос в ключе "вполне достаточно ...", причем обрати внимание, что надо для всех абонентов...:)



 
Zacho   (2003-05-26 10:49) [7]


> Johnmen © (26.05.03 10:44)

Да, согласен, сначало не обратил внимания.


 
Yuriy Der   (2003-05-27 04:57) [8]

А если было несколько начислений с последней датой ?
Правильнее запрос делать так:

select date, sum(code)
from table
where date in (select max(date) from table)
group by date;


 
Yuriy Der   (2003-05-27 05:02) [9]

Прошу, прощения не "in", а "=" !!

select date, sum(code)
from table
where date = (select max(date) from table)
group by date;


 
Maxxx   (2003-05-27 06:31) [10]

Дело в том, что этот запрос будет вложенный и возвращать в нем надо одно поле.


 
off   (2003-05-27 07:44) [11]

До боли знакомый вопрос!!!


 
Johnmen   (2003-05-27 10:13) [12]

>Yuriy Der (27.05.03 04:57)
>А если было несколько начислений с последней датой ?

Будут выведены все эти начисления, что полностью соответствует логике корректного ответа на вопрос.

А тот запрос, что ты привел, ничего общего с решением вопроса не имеет...:)



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

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

Наверх




Память: 0.46 MB
Время: 0.006 c
1-50394
child_sun
2003-06-04 13:35
2003.06.16
Скринсейвер


1-50373
sts
2003-05-30 08:18
2003.06.16
преобразование даты в строку


14-50510
Vertex3f
2003-05-31 14:41
2003.06.16
inherited, override


14-50486
Music
2003-05-29 01:38
2003.06.16
Music


14-50499
Мыш
2003-05-30 06:13
2003.06.16
Куда мы катимся?





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