Topic: Вопрос по SQLite

У меня такой вопрос - не могу найти в документации по SQLite - мне нужно в запросе select выдать в качестве одного из полей номер записи в результате, что-то типа rownum который есть в Оракле, но тут это не работает. Это можно как-то решить?

Re: Вопрос по SQLite

rownum - это для сквозной нумерации?
если да, то при использовании кнопки с действием SQL запрос, можете использовать данный пример:


Для добавления сквозной нумерации в компонент таблицы, в который будет выведен результат запроса, можете воспользоваться ключевым словом "$autoinc".
Например: SELECT "$autoinc", somefield FROM table;

Dmitry.

Re: Вопрос по SQLite

Да, это запрос по кнопке, но это не постой SQL запрос - это Отчет SQL. Попробовал - тут это не работает.

Re: Вопрос по SQLite

Если SQL запрос необходим для отчета, то сквозную нумерацию лучше сделать непосредственно в отчете, текстовое поле с значением: [Line#]

Dmitry.

Re: Вопрос по SQLite

Спасибо, то что надо!

Re: Вопрос по SQLite

как получить при помощи SQL значение определенного поля определенной записи? в частности, нужно прочитать значение полей, которые не отображаются в TableGrid. или к примеру, хочу прочитать занчение определенного поля перед показом формы редактирования записи

Re: Вопрос по SQLite

В примере, который я поместил в теме "Как сделать инкремент числового поля в записи?" как раз есть пример чтения из базы одного поля из таблицы.

8 (edited by DenNik 2015-01-31 21:50:54)

Re: Вопрос по SQLite

хорошо, спасибо.

я в SQL не силен, только начал изучать. поэтому вопрос. есть две связанные таблицы. нужно получить значение из связанной таблицы для записи, выбранной в главной таблице. я применяю код

// получаем значение цвета для статуса выбранной записи
  Color:= VarToStr(SQLExecute('SELECT color FROM markers WHERE id=(SELECT id_markers FROM main WHERE id='
  +IntToStr(frmMain.GridMain.dbItemID)+')'));

можно ли оптимизировать код?

http://ipic.su/img/img7/fs/tables.1422740580.png

Re: Вопрос по SQLite

DenNik
Почти рабочий SQL запрос, только необходимо для поля id указывать и таблицу, а то будет ошибка в данном случае, так как система не поймет, из какой именно таблицы брать поле id, т.к. и одна и другая таблица имеет такое поле.

Color:= SQLExecute('SELECT color FROM markers WHERE markers.id=(SELECT id_markers FROM main WHERE main.id='
  +IntToStr(frmMain.GridMain.dbItemID)+')');
Dmitry.

Re: Вопрос по SQLite

ну мой код работает вообще-то.

а разве конструкция ...FROM main WHERE id... не указывает, что id нужно брать именно из main?

Re: Вопрос по SQLite

DenNik
Значит я ошибался )

Dmitry.