Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > первая запись в таблице


Автор: gordmiand 6.12.2007, 17:46
В базе данных есть записи, в которых одно из полей - Name.
Как программно через SQL-запрос узнать значение поля Name в ПЕРВОЙ записи таблицы БД ?

Автор: Savek 6.12.2007, 18:13
В БД нет ни первой, ни второй никакой либо еще записи. Порядок определяется выборкой

Автор: ilyuha 8.12.2007, 17:10
gordmiand, а что, в вашей БД нет автоинкрементного поля? было бы проще -
Код

SELECT Name FROM [таблица] WHERE ID=1


ЗЫ камнями прошу не кидать если что smile

Автор: Marduk 8.12.2007, 21:20
если нет идентификаторов у записи, то можно так:
Код

SELECT TOP 1 name From TableName

Автор: gordmiand 9.12.2007, 01:15
1. А если запись с автоинкрементом=1 была удалена, то что?
2. Paradox пишет ошибку на Top 1, LIMIT 1 и т.п.

Добавлено через 5 минут и 54 секунды
и в InterBase на запрос

 SELECT TOP 1 kod_mag From Shops

ошибка Token unknown 1

Автор: ilyuha 9.12.2007, 13:56
Цитата(gordmiand @ 9.12.2007,  01:15)
1. А если запись с автоинкрементом=1 была удалена, то что?

то можно делать перезаполнение этих полей после удаления каждой записи

Автор: Vas 9.12.2007, 16:44
Насколько мне известно, если не использовать в запросе из одной таблицы сортировку, то записи выводятся в том порядке, в котором они были добавлены в БД. Соотвественно из запроса берем первую запись и все.
А так конечно все это неверно в корне, в реляционных БД нет понятия порядка записей, порядок достигается заданием определенных условий при выборе данных. Так что определяемся какому условию должна удовлетворять первая запись и выбираем, при автоинкременте никого не надо перенумеровывать, а просто сделать запрос:
Код

select name from table 
where id in (select min(id) from table)

Запрос не проверял, знаю что в оракле прокатит без проблем, а вот на парадоксе видимо будет парадокс smile 

Ilyuha, а если в таблице пару миллионов записей, что же будет если каждую перенумеровывать, да еще если на них ссылается куча таблиц, во каша будет после первого изменения id у записей  smile 

Автор: ilyuha 9.12.2007, 17:24
Vas, согласен, это возможно в относительно простой бд с одной таблицей.... 

Автор: pseud 10.12.2007, 12:02
Цитата(Vas @  9.12.2007,  16:44 Найти цитируемый пост)
Запрос не проверял, знаю что в оракле прокатит без проблем, а вот на парадоксе видимо будет парадокс  


в парадоксе вложенный запрос тоже без проблем прокатит
так что юзаем
Код

select name from table 
where id in (select min(id) from table)

Автор: Deniz 10.12.2007, 12:36
gordmiand, для FireBird
Код
select first 1 * from table

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)