Datensatznummer mit SQL-Befehl ermitteln

MikaM

Mitglied
Hallo User,

folgende Anfängerfrage.

Ich erhalte mit dem SQL-Befehl <select * from kunden where nr = "630.01.01 "> ein Resultset aus einer Access-Datenbank mit 100 Nummern zum Beispiel. Das Resultset enthält nur einen Datensatz, da die Nummer auch nur einmal vorhanden ist.

Meine Frage, wie erhalte ich die dazugehörige Datensatznummer? Also, das die Nummer "630.01.01" zum Beispiel der 30. Datensatz war/ist. Die Nummer ist auch der PrimaryKey.

Im Clipper/dBase gab es so etwas mit dem Befehl <recno()>.

Muß ich das ganze doch in einer while-Schleife laufen lassen oder geht das etwas komfortabler. Bin für jeden Hinweis dankbar.

Gruss MikaM
 
Ich erhalte mit dem SQL-Befehl <select * from kunden where nr = "630.01.01 "> ein Resultset aus einer Access-Datenbank mit 100 Nummern zum Beispiel. Das Resultset enthält nur einen Datensatz, da die Nummer auch nur einmal vorhanden ist.

Meine Frage, wie erhalte ich die dazugehörige Datensatznummer? Also, das die Nummer "630.01.01" zum Beispiel der 30. Datensatz war/ist. Die Nummer ist auch der PrimaryKey.
Wenn ich das richtig sehe, musst du einfach nur den Asterisken (*) durch den Spaltennamen des Primärschlüssels ersetzen. Oder meinst du was anderes? :confused:
 
Danke Dir erst einmal. Mit dem Spaltennamen ist es nicht getan.

Die Datebank besteht zum Beispiel aus 100 verschiedenen Nummer. Ich will mit <select> nach einer bestimmten Nummer suchen. Diese gefunde Nummer (Resultset) steht z.B. an 30. Stelle in der Datenbank und diese Nummer benötige ich.
 
Geduld, junger Padawan.

Diese gefunde Nummer (Resultset) steht z.B. an 30. Stelle in der Datenbank und diese Nummer benötige ich.

An 30. Stelle, wenn die Tabelle nach welcher Spalte sortiert ist? Nach dem Primärschlüssel? Ich glaube nicht, dass es so funktioniert, aber das wäre zumindest mein Ansatz:

SQL:
SELECT COUNT(*) FROM kunden WHERE nr <= "630.01.01" SORT BY nr ASC

Wie gesagt, ich glaube nicht, dass man Strings auf diese Art und Weise vergleichen kann (nr ist doch ein String, oder?), aber das wäre die grundsätzliche Herangehensweise.

Ausserdem – ebenfalls wie gesagt – kann dir niemand wirklich helfen, solange du nicht verrätst, nach welcher Spalte und ob auf- oder absteigend die Tabelle sortiert ist.
 
Danke Dir, das Du mir hilfst.

Die Access-Datei sieht folgendermaßend aus:

Versuche es Dir an einem gleichen Beispiel zu erklären. Vergieß das mit der Nummer, da diese auch nur ein String ist. Also,

diese besteht aus 3 Spalten (name, adresse, bemerkung), alles Strings. Die Spalte <name> hat den PrimaryKey.

name, adresse, bemerkung
---------------------------------------------
Albert, Leipzig, Bemerkung1
Berta, Dresden, Bemerkung2
Dora, Halle, Bemerkung_xyz
Nora, München, bemerkung_abc
Martha, Bremen, Bemerkung_wee
Zeppelin, Rostock, Bemerkung_fgz

Ich will in der Spalte <name> nach dem String <Nora> suchen und möchte die Datensatznummer dazu zurückerhalten. Also in dem Beispiel wäre das der Datensatz Nummer 4.

Ich benötige die Datensatznummer deshalb, weil ich in einem Java-Konstrukt für eine jTable auf den Datensatz fokussieren will.

Danke Mika
 
Danke Dir, das Du mir hilfst.


Ich will in der Spalte <name> nach dem String <Nora> suchen und möchte die Datensatznummer dazu zurückerhalten. Also in dem Beispiel wäre das der Datensatz Nummer 4.

Ich benötige die Datensatznummer deshalb, weil ich in einem Java-Konstrukt für eine jTable auf den Datensatz fokussieren will.

Danke Mika

Ich glaube, da liegt ein konzeptionelles Missverständnis vor. Es gibt in einer Datenbank nicht so etwas wie "einen 4." Datensatz. Daten in einer Datenbank sind in beliebiger Reihenfolge gespeichert, in eine bestimten Reihenfolge kannst du es nur über ein ORDER BY bringen. Aber ich sehe eigentlich dein Problem nicht, du hast den PK ja schon ?

Gruss
 
Zuletzt bearbeitet:
Danke erstmal. Im dbase/clipper konnte man die Datensatznummer mit dem Befehl <recno()> herausbekommen, auch wenn diese indiziert (order by) war. Ansonsten hast Du schon recht, das es konzeptionell nicht stimmt . Mit dem Pk kann ich ja auch nicht viel anfangen. Im Java benötige ich dafür eine Datensatznummer, um mir das Leben nicht schwer zu machen.

Gruss MikaM
 
Mit dem Pk kann ich ja auch nicht viel anfangen. Im Java benötige ich dafür eine Datensatznummer, um mir das Leben nicht schwer zu machen.
Gruss MikaM


Warum ? Geht mit jetzt nicht in den Kopf. Du benötigst einen *Eindeutigen* Schlüssel, um einen Datensatz zu identifizieren, egal ob in Java oder sonstwo. Wie der Schlüssel aufgebaut ist, ist erstmal irrelevant, aber er muss ein PrimaryKey sein. Die "Datensatznummer", welche du anspricht, ist nicht geeigenet dafür

Gruss
 
Gebe ich Dir nicht ganz recht. In einer Java jTable kann ich mit bestimmten Befehlen auf eine beliebige Tabellenzeile springen und diese fokussieren, ohne diese vorher nach einen String zu durchsuchen. Das wollte ich aber mit SQL "erschlagen" . Sonst muß ich die Java jTable ja noch einmal durchsuchen, das wollte ich mir sparen. Vielleicht ist mein Denkansatz auch verkehrt? Gruss
 

Neue Beiträge

Zurück