php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.08.2004, 14:21  
Gast
 
Beiträge: n/a
Standard MySQL Problem

Hi,

ich will innerhalb meines Projektes eine Diaschow proggen, dessen Bilder (jedes einzeln) in MySQL eingetragen sind. Die Diashow muss in unterschiedlichen Fällen anders Sortiert werden. Ich habe eine Seite und übergebe immer die ID des Records im meiner MySQL table. Habe einen Vor- und Zurückbutton bei denen ich die nächste ID bzw. vorherige ID ,ausgehend von der aktuellen ID, eintragen muss. So, das ist noch einfach!

// 1. Sortiert nach ID (fertig)

Nächste ID:
# SELECT MIN(id) FROM tabelle WHERE id > aktuelleid

Vorherige ID:
# SELECT MAX(id) FROM tabelle WHERE id < aktuelleid

Das würde bedeuten, dass die Bilder sortiert sind, wie sie eingetragen worden sind.

// 2. Sortiert nach timestamp

Der timestamp der in der Tabelle eingetragen ist, ist nicht aktuell vom Eintragen (Würde ja sonst die gleiche Reihenfolge wie ID geben)!

Einfach das gleiche wie bei ID nur mit timestamp wird nicht klappen, da der timestamp nicht unique ist. Auf folgende Art und Weise kann ich den nächsten Timestamp bekommen.

Nächster Timestamp:
# SELECT MAX(timestamp) FROM tabelle WHERE timestamp <= aktuellertimestamp and id <> aktuelleid
  • "timestamp <= aktuellertimestamp" damit falls der gleiche timestamp nochmal kommt, dass dieser auch selected werden kann
    "id <> aktuelleid" damit nicht der aktuelletimestamp nochmal genommen wird
Jetzt hätte ich zwar den folgenden timestamp und was ist mt der zugehörigen ID die ich für mein Script brauche?

# SELECT id FROM tabelle WHERE timestamp = timestamp

Frage -> Das kann ich nicht machen denn stellt euch vor es gibt 3 mal den gleichen timestamp. Dann bekomme ich 3 ids und welche ist richtig?


// 3. Sortiert nach Name

Wenn ich das ganze jetzt noch nach Name sortiert haben möchte!? MySQL kann zum Glück Strings mit einfachen Operatoren vergleichen (z.B. "abc" > "aba") vielleicht hilft mir das ja weiter.

Frage -> Wenn ihr was den Namen betrifft ne Lösung habt sagts nur bitte.

---------------

Langsam wird mir das ein bisschen zu kompliziert , hoffentlich versteht jemand was ich hier lang und breit erklärt habe

Danke im Voraus,
Ingmar
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.08.2004, 16:39  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

Vielleicht hilft Dir

SELECT id, timestamp
FROM tabelle
WHERE timestamp <= aktuellertimestamp
AND id <> aktuelleid
ORDER BY timestamp DESC, RAND()
LIMIT 1

weiter. Das RAND() ist dafür, daß Du bei Bildern mit gleichem Timestamp nicht immer dasselbe bekommst ...

Für die Namen dann analog

SELECT id, name
FROM tabelle
WHERE name <= "aktuellername"
AND id <> aktuelleid
ORDER BY name DESC, RAND()
LIMIT 1
tapferesschneiderlein ist offline   Mit Zitat antworten
Alt 26.08.2004, 18:03  
Gast
 
Beiträge: n/a
Standard

Vorerst schonmal super vielen Dank.
Das klingt logisch...wäre ich von slebst aber nicht drauf gekommen .

Und ist es mit RAND() denn nicht möglich, dass ein Bild übersprungen wird?
  Mit Zitat antworten
Alt 27.08.2004, 09:06  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

Dann geht evtl.

ORDER BY timestamp, id

Das RAND() hatte ich auf die Schnelle eingefügt, weil man nie 100%ig voraussagen kann wie MySQL bei gleichen timestamps sortiert. Wenn man ein zweites, eindeutiges Kriterium angibt, schon.
tapferesschneiderlein ist offline   Mit Zitat antworten
Alt 27.08.2004, 14:42  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum.

moved to MYSQL

@carrib:
danke.
imported_Ben 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
MySQL Problem fkrauthan PHP-Fortgeschrittene 5 25.01.2008 18:18
mysql problem mit LIKE und AND kazuya Datenbanken 10 29.10.2007 21:36
MySQL kodierungs problem Mutatos Datenbanken 0 12.05.2006 20:02
MySQL Problem mit INSERT-Queries Arno Nühm Datenbanken 10 07.04.2006 16:46
Serverumzug - Problem mit MySQL Daten [GE]ReeN Datenbanken 6 28.03.2006 17:02
Mysql / Array Problem marcels PHP Tipps 2006 10 23.03.2006 18:30
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MYSQL Problem Datenbanken 4 09.02.2006 15:14
[Erledigt] Mysql + PHP und Datum Problem Datenbanken 11 31.08.2005 12:08
MySQL, PHP und ein großes Problem! Datenbanken 2 27.08.2005 10:51
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] Problem MySQL 3 und 4 PHP-Fortgeschrittene 9 02.08.2005 16:45
[Erledigt] mysql installations problem Datenbanken 4 16.02.2005 18:46
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Problem mit 2 gleichzeitigen MySQL abfragen PHP Tipps 2004 2 08.07.2004 13:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
select * where id mysql php, timestamp als id php, php erhalte immer gleichen timestamp, mysql max timestamp id, select timestamp aktuellster, timestamp in tabelle eintragne, mysql nächster timestamp

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:27 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.