Форум: "Базы";
Текущий архив: 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