AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL Zeilenindex

Ein Thema von tomkupitz · begonnen am 7. Feb 2017 · letzter Beitrag vom 8. Feb 2017
Antwort Antwort
Seite 1 von 2  1 2      
tomkupitz

Registriert seit: 26. Jan 2011
339 Beiträge
 
Delphi 12 Athens
 
#1

MySQL Zeilenindex

  Alt 7. Feb 2017, 22:05
Datenbank: MySQL • Version: 5.7 • Zugriff über: Delphi (API)
Hallo,

habe hier eine Tabelle:

Id Text
0 abc
1 lmn
2 xyz

Bisher habe ich eine Zeile ausgelesen oder gelöscht mit:

SELECT * FROM Tabelle1 WHERE Id = 0 //hier also die Zeile mit Id=0 und auch Index=0

Nun habe ich die Tabelle so verändert:

Id Text
1 lmn
2 xyz

Mit obiger Query findet er die Zeile jetzt natürlich nicht mehr. Wie kann ich im Query angeben, das ich die Zeile mit dem Index=0 (1 lmn, also erste Zeile der Tabelle) auslesen oder löschen will?

Danke und beste Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: MySQL Zeilenindex

  Alt 7. Feb 2017, 22:16
definiere was für dich die erste Zeile in dieser Tabelle definiert?
Ich vermute den Eintrag mit dem kleinsten Wert für die Spalte ID

also

Code:
select min(id) from tabelle1
damit ist der Löschbefehl

Code:
delete from tabelle1 where id = (select min(id) from tabelle1
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
tomkupitz

Registriert seit: 26. Jan 2011
339 Beiträge
 
Delphi 12 Athens
 
#3

AW: MySQL Zeilenindex

  Alt 7. Feb 2017, 22:28
Zitat:
definiere was für dich die erste Zeile in dieser Tabelle definiert?
Ich vermute den Eintrag mit dem kleinsten Wert für die Spalte ID
genau.

Ich baue die Id so: 'CREATE TABLE '+TableName+'(id INT NOT NULL AUTO_INCREMENT, '...
Somit wird die id immer aufsteigend sein (da ich sie nie selber setze). Also ist select min(id) from tabelle1 die Lösung.

Danke und beste Grüße
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: MySQL Zeilenindex

  Alt 7. Feb 2017, 22:33
definiere was für dich die erste Zeile in dieser Tabelle definiert?
Das ist ja sehr zurückhaltend formuliert. Eine Tabelle ist ein ungeordnetes Sammelsurium von Datensätzen/Werten. Je nachdem wie auf sie zugegriffen werden soll, werden Indices eingerichtet und jeder Index zeigt auf einen kleinsten Wert, der aber nicht zwangsläufig für alle der kleinste sein muß. Falls Du einen Datensatz löschen willst, dann definiere ihn über die ID oder/und einen Datenwert, aber niemals über " und auch Index=0". Das ist eine Information, die ausschließlich innerhalb der Datenbank benötigt und genutzt wird.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
tomkupitz

Registriert seit: 26. Jan 2011
339 Beiträge
 
Delphi 12 Athens
 
#5

AW: MySQL Zeilenindex

  Alt 7. Feb 2017, 22:42
Also kann auf die Tabellenzeilen nicht (etwa wie in einer StringList) über den Index zugreifen?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: MySQL Zeilenindex

  Alt 8. Feb 2017, 01:24
Nein, nur über den Inhalt.

Wenn die ID eindeutig ist, was bei Auto_Increment ja der Fall ist, wäre die kleinste ID wie oben beschrieben zu finden.

Aber:

select id, text from tabelle1 order by text liefert eine andere Sortierung und damit muss der erste Satz im Abfrageergebnis noch lange nicht der mit der kleinsten ID sein.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: MySQL Zeilenindex

  Alt 8. Feb 2017, 09:23
Pedantisch:
Der Begriff "Index" hat hier in diesem Zusammenhang im Datenbankbereich nichts verloren. Der Datenbank-Index ist ein Hilfskonstrukt, das den Datenzugriff beschleunigen soll. Das hat nichts mit konkreten Werten zu tun. Die Existenz eines Spalten-Index (als Datenbankbegriff) hat keinerlei Einfluss auf Funktion und fachliches / logisches Verhalten, Werte oder sonstwas.
Es geht dabei nur um Performance.

Hier ist (wenn überhaupt) von einem Schlüssel (Key) die Rede, falls definiert, ansonsten kann man lediglich von einem kleinsten Wert ausgehen bzw. sprechen. (Den kann man meinetwegen noch als logischen Schlüsselwert bezeichnen).

"Kleinster Wert" ist wiederum eindeutig von der Begrifflichkeit, unabhängig von der Sortierung.
"Erster Wert" ist nicht(!) eindeutig, da er von der Sortierung abhängig ist, also quasi situationsabhängig.

Das Löschen des "ersten Wertes" macht also nur unter strengen Bedingungen Sinn, z.B. wenn über eine Tabelle ein FIFO oder ähnliches realisiert werden soll.
Ansonsten ist es jedenfalls angesagt, mit fachlich korrekt eingesetzten, konkreten Schlüsseln (Schlüsselwerten)zu arbeiten.
Auch das Löschen des kleinsten Wertes, was fachlich erwünscht sein kann, ist bspw. in einer Mehrbenutzerumgebung kritisch zu betrachten.
Gruß, Jo

Geändert von jobo ( 8. Feb 2017 um 14:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: MySQL Zeilenindex

  Alt 8. Feb 2017, 11:04
Auch das Löschen des kleinsten Wertes, was fachlich erwünscht sein kann, ist bspw. in einer Mehrbenutzerumgebung kritisch zu betrachten.
Was meinst Du damit?
Wenn genügend Benutzer da sind, löscht jeder den kleinsten Wert, und schwupp ist nichts mehr da?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: MySQL Zeilenindex

  Alt 8. Feb 2017, 12:08
Ja, z.b. ist nichts mehr da, im schlimmsten Fall. Was aber schon eine massive Fehlfunktionen wäre. (Die wahrscheinlich auch schnell auffällt)
Die "Kleinheit" ist ja eine Frage der Perspektive. Wenn mehrere Nutzer den gleichen Arbeitsschritt durchführen und das Timing möglichst ungünstig, wer löscht dann welchen Wert? Kann un-erheblich sein, kann aber auch zu Fehlern führen.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: MySQL Zeilenindex

  Alt 8. Feb 2017, 12:36
Da Du einen solchen Blödsinn mit einrechnest scheint es um Datenbanken schlimmer zu stehen als ich gedacht habe.


Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:22 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