Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL und Zeilennummer im Select (https://www.delphipraxis.net/68202-mysql-und-zeilennummer-im-select.html)

Thanatos81 26. Apr 2006 09:20

Datenbank: MySQL • Version: 4.1.13 • Zugriff über: ZEOS

MySQL und Zeilennummer im Select
 
Guten Morgen zusammen!

Gibt es bei MySQL eine Möglichkeit, in einer Query dem Resultset dynamisch Zeilennummern hinzuzufügen. Sprich ich habe ein
SQL-Code:
SELECT feld1, feld2, feld3 FROM tabelle WHERE feld5 = bedingung
. Und das Resultset hätte ich gerne von 1 aufsteigend durchnummeriert, also nicht einen Autozähler für die gesamte Tabelle, sondern nur für die jeweilige Abfrage.

SChönen Dank im Voraus,

Plague 26. Apr 2006 09:57

Re: MySQL und Zeilennummer im Select
 
Dann lass doch einfach eine Variable bei jeder Ausgabe um 1 erhöfen und setz sie davor, dahinter oder wo auch immer du die Nummerierung stehen haben willst...

Gruß
Thomas

Thanatos81 26. Apr 2006 10:10

Re: MySQL und Zeilennummer im Select
 
Danke! Das war der Hinweis den ich brauchte, mit
SQL-Code:
SET @zaehler = 0;
SELECT LfdNr, name, (@zaehler := @zaehler + 1) as RecNo FROM lablabore
WHERE LfdNr > 2
funzt es nun!

Kedariodakon 26. Apr 2006 10:19

Re: MySQL und Zeilennummer im Select
 
Mal so eine Frage, wofür braucht man das in der Tabelle?

Bye

Thanatos81 26. Apr 2006 10:21

Re: MySQL und Zeilennummer im Select
 
Um bei der Darstellung in nem DBGrid ne laufende Positionsnummer zu haben, die ansonsten aber nicht genötigt wird -> ergo es wären unnötige Daten in Tabelle, würde ich die Positionsnr mit speichern.

//Edit hab aber doch noch ein Problem...
Über den EMS MySQL-Manager funktioniert obiges Statement. Sete ich es aber üdber die ZeosKomponente ab, bekomme ich ne Fehlermeldung, ich solle mir die Syntax beim ; anschauen... Jemand eine Ahnung, woran das liegen könnte?

Gollum 26. Apr 2006 11:20

Re: MySQL und Zeilennummer im Select
 
Hallo,

wahrscheinlich musst Du das Kommando in 2 Einzelschritte aufteilen.
Als erstes die Set-Anweisung und daran anschließend das Select-Statement.

Thanatos81 26. Apr 2006 11:41

Re: MySQL und Zeilennummer im Select
 
Hab ich auch schon versucht, ja. Aber dann bekomm ich für @zaehler NULL zurück :?

marabu 26. Apr 2006 12:27

Re: MySQL und Zeilennummer im Select
 
Hallo Thomas,

ich habe gerade kein ZEOS zur Hand, aber vielleicht gibt es dort eine gesonderte Komponente mit der du SQL Batches verarbeiten kannst?

Grüße vom marabu

Sharky 26. Apr 2006 12:44

Re: MySQL und Zeilennummer im Select
 
Hai ihr,

da es bei den Zeos wohl nicht so einfach geht um einen SQL-Batch zu verarbeiten (der ZSQLProzessor ist wohl nicht für SELECTs geeignet) habe ich mir eine "etwas andere" Lösung überlegt ;-)

Delphi-Quellcode:
procedure TDemoForm.Button1Click(Sender: TObject);
begin
  with Query1 do
  begin
    SQL.Text := 'SELECT *, null as position FROM test WHERE id > 1';
    Open;
  end;
end;

procedure TDemoForm.Query1AfterOpen(DataSet: TDataSet);
begin
  with DataSet.FieldByName('position') do
  begin
    OnGetText := Query1recnoGetText;
  end;
end;

procedure TDemoForm.Query1recnoGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  if (sender.FieldName = 'position') then
    Text := IntToStr(sender.DataSet.RecNo);
end;
Ich habe in meiner SELECT-Anweisung ein "Dummyfeld" dem ich einfach ein OnGetText zuweise und dieses dann mit der Recordposition befülle. Nicht schön aber selten :stupid:

Thanatos81 26. Apr 2006 13:46

Re: MySQL und Zeilennummer im Select
 
Huhu Sharky!

Zitat:

Zitat von Sharky
Nicht schön aber selten :stupid:

Und funktioniert ;-) Das ist ein nicht zu unterschätzender Pluspunkt :D Danke dir, und natürlich auch den anderen für ihre Bemühungen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz