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

Вниз

помогите нипасать правильный SQL   Найти похожие ветки 

 
koks   (2005-08-02 16:00) [0]

Уважаемые знатоки!

Затрудняюсь написать правильный SQL.

Мне нужно вытащить из таблицы запись с максимальным значением.
(НЕ МУКСИМУМ А ВСЮ ЗАПИСЬ С МАКСИМУМОМ!)

То что делаю я:

SELECT MAX(AVALUE)
FROM myTable
WHERE <навороченное условие>
INTO :AMAXVALUE

SELECT F1, F2, ... Fn
FROM myTable
WHERE (<навороченное условие>) AND (AVALUE = :AMAXVALUE)

Кажется мне крайне некрасивым и вообще не правильным.

Подскажите - есть ли к.-л. более эффективное решение.

Заранее спасибо.


 
Johnmen ©   (2005-08-02 16:02) [1]

Вложенный запрос в условии WHERE главного.


 
ANB ©   (2005-08-02 16:06) [2]

Эффективное - это навряд ли. А если записей с таким значением будет несколько ?


 
koks   (2005-08-02 16:13) [3]

2 Johnmen - а как это правильно сделать ведь в WHERE нульзя написать вложенный SELECT.

2 ANB  - над эти думал - в принципе если их несколко нужно вернуть любую (НО ОДНУ!)


 
Виталий Панасенко   (2005-08-02 16:15) [4]

select first 1 * from mytable order by avalue desc


 
Johnmen ©   (2005-08-02 16:16) [5]

>...ведь в WHERE нульзя написать вложенный SELECT.

Отчего же нельзя? Документация говорит, что можно.
SELECT ... WHERE A=(SELECT ... WHERE ...)


 
Виталий Панасенко   (2005-08-02 16:18) [6]


> koks   (02.08.05 16:13) [3]
> 2 Johnmen - а как это правильно сделать ведь в WHERE нульзя
> написать вложенный SELECT.

Можно... select * from table1 where id in (select id from table2 where bla-bla-bla) and doc_date between :dat1 and :dat2


 
Глюкоман   (2005-08-03 00:40) [7]

а если сделать упорядочивание по твоему полю (order by AVALUE), далее query1.last и читай свою запись без использования агрегатных функций, если в лом query1.last, сделай order by AVALUE desk


 
pasha_golub ©   (2005-08-03 04:36) [8]

НЕ силен в ФайрБерде...

А LIMIT он понимает? Можно было бы

SELECT ... LIMIT 1;


 
ANB ©   (2005-08-03 12:52) [9]

Эх.
select * from mTable where AVALUE in (SELECT MAX(AVALUE)
FROM myTable
WHERE <навороченное условие>)

Ограничение, чтобы только одна выводилась - сам поищи. В оракле rownum есть, в MS SQL - top. В IB - может кто подскажет.


 
Виталий Панасенко   (2005-08-03 16:12) [10]


> Виталий Панасенко   (02.08.05 16:15) [4]
> select first 1 * from mytable order by avalue desc

Я не повторяюсь...Я не повторяюсь...Я не повторяюсь...:-)



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

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

Наверх




Память: 0.46 MB
Время: 0.012 c
14-1124952185
DVM
2005-08-25 10:43
2005.09.18
Странный знак на банкноте 100$


1-1124994267
TStas
2005-08-25 22:24
2005.09.18
Как подключить файл помощи?


1-1125238695
_M_I_X_
2005-08-28 18:18
2005.09.18
Сохранение файла с расширением


14-1124451905
vajo
2005-08-19 15:45
2005.09.18
Проблемы с Flash Drive 512M


1-1125301876
chili
2005-08-29 11:51
2005.09.18
Подскажите как сделать PopupMenu (менюшку с большими значками)





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