php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.03.2005, 00:19  
Gast
 
Beiträge: n/a
Standard Vorigen und nächsten Eintrag

Hallo zusammen,

folgendes Problem: ich habe eine Tabelle, aus der sich der Benutzer einen beliebigen Eintrag auswählen und anzeigen lassen kann.

Wie kann ich nun am geschicktesten und schnellsten den vorherigen und den nächsten Eintrag dieses Eintrags abfragen? Die Tabelle wird alphabetisch sortiert, da sie aber ca. 5000 Einträge umfasst will ich eine Einzelabfrage aller Begriffe vermeiden.

lg Pepe.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.03.2005, 00:25  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

naja haben die einträge eine ID? hoffentlcih :P

dann vieleicht einfach über ORDER BY ID WHERE ID > momentane ID LIMIT 1
und halt dann noch < momentane ID dann hast du die einträge davor und danach.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 26.03.2005, 00:27  
Gast
 
Beiträge: n/a
Standard

IDs haben die Einträge schon, aber leider nicht geordnet. Deswegen frag' ich ja
  Mit Zitat antworten
Alt 26.03.2005, 00:31  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

was heißt geordnet? die ID's, wenns ne auto-increment spalte ist, sind der reihenfolge nach, wie sie eingetragen wurden. Ich versteh dien Problem nicht, Beschreib doch mal genauer, was deiner Ansicht nach der "nächste" Eintrag ist.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 26.03.2005, 00:38  
Gast
 
Beiträge: n/a
Standard

Also der "vorige Eintrag" ist derjenige Eintrag, der in der alphabetischen Sortierung vor dem ausgewählten Eintrag steht. Mit dem "nächsten Eintrag" verhält es sich genauso, nur das er halt nach dem ausgewählten Eintrag steht.

Auch wenns ne auto-increment Spalte ist, sind die IDs nicht geordnet, da die gewissermaßen wild durcheinander eingegeben wurden.
  Mit Zitat antworten
Alt 26.03.2005, 00:51  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

naja geordnet sind sie schon und zwar ist die ID dann die reihenfolge wie die Einträge in die Datenbank gmeacht wurden. :P

also ich hab grad mal bissel rumgespielt, bin mir aber nciht ganz sicher wie ich das ergebnis auswerten soll. folgende testdatenkbank:

Code:
CREATE TABLE `asdf` (
  `ID` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`ID`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;

INSERT INTO `asdf` VALUES (1, 'asdf');
INSERT INTO `asdf` VALUES (2, 'dsdf');
INSERT INTO `asdf` VALUES (3, 'csdf');
INSERT INTO `asdf` VALUES (4, 'gsdf');
INSERT INTO `asdf` VALUES (5, 'bsdf');
INSERT INTO `asdf` VALUES (6, 'esdf');
INSERT INTO `asdf` VALUES (7, 'fsdf');

jetzt hab ich mal mit

SELECT *
FROM `asdf`
WHERE name > 'esdf'
ORDER BY `name` DESC
LIMIT 1

rumgespielt, vieleicht bekommst du auf die Art ja deinen nächsten eintrag, bin mir allerdings nciht ganz sicher was genau mysql da bei den strings mit > und < macht, hab da jezt ein paar gedanken, bin aber zu faul das alles aufzuschreiben, experimentier damit vileicht mal rum, aber vieleicht hat ja noch jemand anders ne bessere lösung, mein latein ist am ende ansonsten. :P

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 26.03.2005, 00:58  
Gast
 
Beiträge: n/a
Standard

Danke, das klappt!
Wusste gar nicht, dass man Strings auch mit < und > vergleichen kann. Jetzt muss ich mir nur noch was für doppelte Einträge einfallen lassen...
  Mit Zitat antworten
Alt 26.03.2005, 01:01  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

indem du dein namens-feld als unique definierst ? :P dann geht jeder name nur einmal rein.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 26.03.2005, 01:11  
Gast
 
Beiträge: n/a
Standard

Ne, doppelte Einträge sind in der Tabelle erlaubt. Ich hab da aber schon eine Idee:

SELECT
*
FROM
tabelle
WHERE
term < 'abc' OR (term = 'abc' AND id < x)
ORDER BY
term DESC,
id DESC
LIMIT 1
  Mit Zitat antworten
Alt 26.03.2005, 01:13  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

hmm der ansatz ist gut, wenn du ihn beim sortieren und normal anzeigen genaus hast, ist es ein logisches konzept. und nicht mit DESC und ASC durcheinanderkommen :P

naja mal ncoh viel spass, ich packs dann mal so langsam richtung Bett

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sortierreihenfolge nach Eintrag oder letzter Änderung leuktra Datenbanken 7 29.01.2007 19:20
UPDATE eintrag falls vorhanden ansonsten INSERT Plague Datenbanken 4 19.01.2007 13:36
'Sender:' Eintrag im Mailheader PHP-Fortgeschrittene 2 01.10.2006 17:00
Nächsten Eintrag aus DB lesen Riot Datenbanken 7 27.05.2006 20:23
bilder anzeige Nosferatu PHP Tipps 2006 2 31.03.2006 09:44
Mysql Eintrag über mehrere Zeielne Eintrag funzt nicht PHP Tipps 2006 3 14.03.2006 19:38
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
PHP klappmenü PHP Tipps 2005-2 1 15.10.2005 00:31
Eintrag wird nicht eingetragen (Kontrollfunktion lügt?) PHP Tipps 2005-2 0 02.10.2005 12:00
[Erledigt] Nächsten Eintrag in der mySQL DB auslesen Datenbanken 6 14.09.2005 13:24
Chat aktualisieren bei neuem eintrag... PHP-Fortgeschrittene 2 24.04.2005 15:11
Eintrag wird nicht Anezeigt! PHP Tipps 2004 1 08.11.2004 22:12
Eintrag überprüfen (MySQL) vor Neueitrag PHP Tipps 2004 2 14.10.2004 11:45
Wie kann ich den lezten Eintrag wieder auslesen? Pimbolie1979 Datenbanken 7 19.08.2004 10:49
[Erledigt] Abfrage ob Eintrag schon in DBbevor Eintrag gespeichert wird Datenbanken 6 06.08.2004 22:10


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:42 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.