Mam tabelę a w niej pola:
ID, numer, ....
Jak sformułować zapytanie do bazy aby program zwrócił mi ID dla najmniejszego numeru MIN(numer)?
Z góry dzięki
Mam tabelę a w niej pola:
ID, numer, ....
Jak sformułować zapytanie do bazy aby program zwrócił mi ID dla najmniejszego numeru MIN(numer)?
Z góry dzięki
SELECT min(numer) FROM tabela;
Mniej więcej takie coś. Nie mam w tej chwili FB, więc zobacz czy działa.
Ale ja potrzebuję nie najmniejszą wartość kolumny "numer" tylko wartość z sąsiedniej kolumny "ID" dla której kolumna "numer" ma najmniejszą wartość. Inaczej - w kolumnie "numer" są liczby, któraś z nich jest najmniejsza. Pytanie brzmi: jaki jest jej ID ?
Dwa rozwiązania, czy dobre niech znawcy się wypowiedzą:
1). za pomocą order by, czyli najmniejszy numer będzie na pierwszej pozycji
SELECT * FROM tabela ORDER BY numer ASC; // można dodać LIMIT np: 5
2). dwa zapytania
Tak jak wyżej pisałem i wynik zapisać w zmiennej
Następnie
SELECT * FROM tabela WHERE numer=minimum;
Zrobiłem tym 2 sposobem, ale myślałem że można to zrobić w jakimś jednym sprytnym zapytaniu :)
a nie mozna tak:
SELECT * FROM tabela WHERE numer = (SELECT min(numer) FROM tabela);
Tego wolałem uniknąć, bo nie wiem czy wersja FB autora ma pozapytania
Ma, ma, i działa twoje zapytanie, ale... wyraźnie wolniej! mimo iż w bazie mam może 200 rekordów. Dlatego pozostawie jednak to 2-gie rozwiązanie-działa błyskawicznie.
procedure TForm1.Button1Click(Sender: TObject);
begin
with ibquery1, sql do
begin
Close;
Clear;
Add('SELECT MIN (Pole1) FROM Nazwa_tabeli');
Open;
Edit1.Text:=ibquery1.Fields[0].AsString;
end;
end;