AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL und Zeilennummer im Select
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL und Zeilennummer im Select

Ein Thema von Thanatos81 · begonnen am 26. Apr 2006 · letzter Beitrag vom 26. Apr 2006
Antwort Antwort
Thanatos81
(Gast)

n/a Beiträge
 
#1

MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 09:20
Datenbank: MySQL • Version: 4.1.13 • Zugriff über: ZEOS
Guten Morgen zusammen!

Gibt es bei MySQL eine Möglichkeit, in einer Query dem Resultset dynamisch Zeilennummern hinzuzufügen. Sprich ich habe ein
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,
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#2

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 09:57
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
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#3

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 10:10
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!
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 10:19
Mal so eine Frage, wofür braucht man das in der Tabelle?

Bye
Christian
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#5

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 10:21
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?
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 11:20
Hallo,

wahrscheinlich musst Du das Kommando in 2 Einzelschritte aufteilen.
Als erstes die Set-Anweisung und daran anschließend das Select-Statement.
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#7

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 11:41
Hab ich auch schon versucht, ja. Aber dann bekomm ich für @zaehler NULL zurück
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 12:27
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#9

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 12:44
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
Stephan B.
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#10

Re: MySQL und Zeilennummer im Select

  Alt 26. Apr 2006, 13:46
Huhu Sharky!

Zitat von Sharky:
Nicht schön aber selten
Und funktioniert Das ist ein nicht zu unterschätzender Pluspunkt Danke dir, und natürlich auch den anderen für ihre Bemühungen!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 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