Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Vorigen Satz einer Datenbank (SQL,Visual Basic, WPF)

kaktus7 / 4 Antworten / Baumansicht Nickles

Bin noch Angänger bei diesem Thema

Hier das Problem:

Es gibt z.b 100 Lieferanten mit der Nummer 1 bis 100

Gesuchter Lieferant hat Nummer 70

Bin noch Angänger bei diesem Thema

Ein einzelner Satz wird in Dataset und -table eingelesen.

sql = "Select TOP 1 * FROM LIEF "
sql += "WHERE Liefer = @hinkel"
selectLIEF = New SqlCommand(sql, conn)

Wenn ich einen Satz > 70 haben will, klappt das. Lieferant 71 wird angezeigt.

Wenn ich einen Satz
Natürlich kann man die Tabelle umsortieren. In diesem Beispiel kein Problem.
Kann aber bei gößerer Tabelle und schnellem Rückwärtslesen das Tempo arg verlangsamen.

Der CurrenyManager geht bei WPF nicht.

Gibt es eine Möglichkeit einen einzelnen Satz kleiner als aus der DB zu holen?

bei Antwort benachrichtigen
Borlander kaktus7 „Vorigen Satz einer Datenbank (SQL,Visual Basic, WPF)“
Optionen
Gesuchter Lieferant hat Nummer 70

Warum nicht einfach
SELECT * FROM Lieferant WHERE Nummer=70 ?
(Die Abfrage müsste mit allen SQL-Datenbanken funktionieren)


Gruß
Borlander
bei Antwort benachrichtigen
kaktus7 Borlander „ Warum nicht einfach SELECT FROM Lieferant WHERE Nummer 70 ? Die Abfrage müsste...“
Optionen

eben nicht.
Ich will den nächstkleineren. Und zwar ohne daß die DB vom ersten bis zum nächstkleiner ausgelesen wird.

Gruß
Kaktus7

bei Antwort benachrichtigen
ChrE kaktus7 „eben nicht. Ich will den nächstkleineren. Und zwar ohne daß die DB vom ersten...“
Optionen

Hallo,

Und woher soll die Datenbank wissen, welches die nächstkleinere
Nummer ist? Die Datensätzen müssen ja nicht physikalisch sortiert in der
Datenbank vorliegen. Die Reihenfolge kann also auch sein Nr=50 Nr=502 Nr=51 Nr=60

Ein Index auf die Nummernspalte sollte doch solche Operationen
beschleunigen, oder irre ich mich?

Gruss

ChrE

bei Antwort benachrichtigen
Borlander kaktus7 „eben nicht. Ich will den nächstkleineren. Und zwar ohne daß die DB vom ersten...“
Optionen

Dann eben

SELECT *
FROM Lieferant
WHERE Nummer ORDER BY Nummer DESC
LIMIT 1


oder

SELECT *
FROM Lieferant
WHERE Nummer = (
  SELECT MAX(Nummer) FROM Lieferant WHERE Nummer )

bei Antwort benachrichtigen