PDA

Просмотр полной версии : [Помогите!] SQL запрос. Вывод данных по условию.


NebesaBag
14.05.2014, 20:43
Здравствуйте.
Имеется таблица table, в ней есть 2 поля: id и user.
Необходимо получать значения id у заданного user='Пример'
Чтобы получить значение id у последней строки где user='Пример' я делаю следующий запрос

DataModule2.ADOQuery1.SQL.Text :=
'SELECT id FROM table WHERE user='+QuotedStr('Пример');


Вопрос в следующем: каким запросом я могу получить ВСЕ значения id из таблицы table где user='Пример'. Ведь мне кажется будет глупым просто перебирать каждую строку базы данных на наличие значения "Пример" в столбце user

Благодарю заранее.

RenatPro
15.05.2014, 06:47
Здравствуйте.
Имеется таблица table, в ней есть 2 поля: id и user.
Необходимо получать значения id у заданного user='Пример'
Чтобы получить значение id у последней строки где user='Пример' я делаю следующий запрос

DataModule2.ADOQuery1.SQL.Text :=
'SELECT id FROM table WHERE user='+QuotedStr('Пример');


Вопрос в следующем: каким запросом я могу получить ВСЕ значения id из таблицы table где user='Пример'. Ведь мне кажется будет глупым просто перебирать каждую строку базы данных на наличие значения "Пример" в столбце user

Благодарю заранее.

На сколько я знаю базы данных только перебором с условием)

MembRupt
15.05.2014, 09:12
На PHP видел решение подобной задачи. А не легче ли просто таблицу изменить, чтобы ключ был уникальным?

NebesaBag
16.05.2014, 01:36
Вопрос решился следующим образом:
Вывод ответа по запросу я получал так DataModule2.ADOQuery1.Fields[0].AsString;
Данный метод выявлял только 1 строку таблицы.
Но затем я сделал вывод следующим образом и получил желаемый результат
DataModule2.ADOQuery2.SQL.Text :=
'SELECT id As main FROM table WHERE user='+QuotedStr(Utf8Decode(users));
DataModule2.ADOQuery2.Open;
DataModule2.ADOQuery2.First;
while not DataModule2.ADOQuery2.EOF do
begin
Memo1.Lines.Add(DataModule2.ADOQuery2.FieldByName( 'main').AsString);
DataModule2.ADOQuery2.Next;
end;
DataModule2.ADOQuery2.Close;