Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

помогите нипасать правильный 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
4-1122535985
Shopot
2005-07-28 11:33
2005.09.18
Как дописать данные в конец текстового файла?


1-1125055148
MrTime
2005-08-26 15:19
2005.09.18
Класс для работы с файлом собственной структуры


1-1125131565
Rb
2005-08-27 12:32
2005.09.18
Как проверить установлен ли WinWord


3-1123488421
Ярослав
2005-08-08 12:07
2005.09.18
Доступ к таблице Paradox


14-1124442990
Vlad Oshin
2005-08-19 13:16
2005.09.18
В свете последних МР, PM пятницы и лампочки на потолке.