maik87
Goto Top

MySQL - dritten Datensatz auslesen ohne durchlaufende Nummerierung

Hallo zusammen,

folgendes:

Ich habe hier eine MySql-Datenbank laufen. Jetzt möchte ich in PHP eine Pflegemaske realisieren. Wenn ich in meiner Tabelle beispielsweise 20 Datensätze habe, dann kann ich ja mit count die Anzahl auslesen und als "Datensatz x von y" anzeigen lassen. Wie aber schaffe ich es nun, gezielt z.B. den dritten Datensatz auszulesen? Ich habe leider keine fortlaufende Nummerierung. Der PK ist eine Zufallszahl. Auch sollte der dritte Datensatz immer der dritte bleiben, nicht durch hinzufügen von Daten verschoben werden.

Wer kann mir da einen Tipp oder einen SQL-Command geben?

Danke schonmal!!!

Content-Key: 153356

Url: https://administrator.de/contentid/153356

Printed on: April 26, 2024 at 06:04 o'clock

Member: BBfreak
BBfreak Oct 19, 2010 at 10:17:36 (UTC)
Goto Top
Hi,

bisher haste in php bestmmt nen 'while'-Ergebniss vorhanden gibt Datensatz aus. Da kannste auch direkt sagen: gib nur den dritten Datensatz aus. Die SQL Abfrage bleibt dabei aber die gleiche... Eine SQL-Abfrage die das so kann ist mir nicht bekannt.

Das der PK ne Zufallszahl ist und nicht nen Autocount hat klingt strange und würde dieses Problem einfach umgehen ... Aber wird ja gewiss seinen Sinn haben ;)
Member: BBfreak
BBfreak Oct 19, 2010 at 10:20:45 (UTC)
Goto Top
[ http://www.faqs.org/docs/ppbook/x5802.htm ]

LIMIT { count | ALL }

Limits the number of rows returned to a maximum of count, or explicitly allows ALL rows.
{ OFFSET | , } start

Instructs the LIMIT clause at what point to begin limiting the results. For example, a LIMIT with a count set to 100, and an OFFSET clause with a start value of 50 would return the rows from 50 to 150 (if there are that many results to return).

ggf kannste aber auch damit mit Limit 1 und Start Value 3 weitermachen.

Gruß
Member: Maik87
Maik87 Oct 19, 2010 at 10:22:46 (UTC)
Goto Top
Hallo,

danke bereits für deine Antwort.

Bis jetzt habe ich noch garnichts stehen. Bin erst am Anfang des Projekts. Ich hab eine Datenbank in Access, wo die ganze Daten drin sind. Hat mein Vor Vor Vorgänger mal eingerichtet. Jetzt soll das ganze aber online geschaltet werden, um mehr Benutzern die Pflege zu ermöglichen und ein bestehendes Zugriffskonzept nutzen zu können. Über den Sinn oder Unsinn des PK kann man diskutieren. Ich will aber die Daten so übernehmen wie sie sind. Nur an den Masken soll noch geschraubt werden. Ich möchte mit PHP nicht erst die ganze Datenbank abrattern um Datensatz 5345 auszugeben. Ich möchte gezielt drauf ansprechen. Geht hier um Performance ;)
Member: Maik87
Maik87 Oct 19, 2010 at 10:24:05 (UTC)
Goto Top
Zitat von @BBfreak:
[ http://www.faqs.org/docs/ppbook/x5802.htm ]

LIMIT { count | ALL }

Limits the number of rows returned to a maximum of count, or explicitly allows ALL rows.
{ OFFSET | , } start

Instructs the LIMIT clause at what point to begin limiting the results. For example, a LIMIT with a count set to 100, and an
OFFSET clause with a start value of 50 would return the rows from 50 to 150 (if there are that many results to return).

ggf kannste aber auch damit mit Limit 1 und Start Value 3 weitermachen.

Gruß


Hey danke,

sowas suche ich. Werde ich nachher mal testen, sobald die ersten Zeilen code stehen.

Aber der dritte bleibt dann auch immer der dritte? Am besten Order by Eingabedatum ASC, oder?
Member: godlie
godlie Oct 19, 2010 at 10:59:33 (UTC)
Goto Top
Hallo,
was spricht denn dagegen dir eine eigene Spalte mit Nummerierung hinzuzufügen wenn du die Daten übernimmst?
Member: Maik87
Maik87 Oct 19, 2010 at 11:45:00 (UTC)
Goto Top
Wird ein Datensatz gelöscht ist ein Loch drin ;)
Member: godlie
godlie Oct 19, 2010 at 11:51:00 (UTC)
Goto Top
und weiter ? ob da 1,2,3,4,5,6,7,8,9 oder 1,5,6,8,9 steht is ja schnuppe du hast eine ansteigende eindeutige zahl an der du dich orientieren kannst,
was du aber in deinem Fall auch an dem Erstellungsdatum kannst .
Member: Maik87
Maik87 Oct 19, 2010 at 13:40:16 (UTC)
Goto Top
Nee, ist nicht schnuppe...

Jetzt hab ich son ein Vor und Zurück button, der sich auf die Zahl bezieht. Wenn ich bei 6 bin, auf Vor, also 6+1 klicke, gibts keinen Datensatz dazu... Ich will aber den nächsten haben.
Member: godlie
godlie Oct 19, 2010 at 14:11:07 (UTC)
Goto Top
Vor und Zurück kannst mit Limit realisieren stichwort Pagination.