php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-05-2007, 16:25
phpdeveloper
 Newbie
Links : Onlinestatus : phpdeveloper ist offline
Registriert seit: May 2007
Beiträge: 14
phpdeveloper ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit ORDER By

Hallo,

ich hänge schon seit längeren an dieser stelle fest.
Und zwar entwickle ich gerade ein kleines Forum das die Threads in einem Forum nach Datum und Uhrzeit sortieren soll.
Dabei wird geguckt in welchem Thread der neuste Beitrag ist, dieser wird bei jeder Antwort in lastpostdate und lastposttime geschrieben.

Ich frage also wie folgt ab:

SELECT *FROM thread WHERE boardid = '$boardid' ORDER By lastposttime, lastpostdate DESC

Leider sortiert er dann entweder nach Datum ODER Uhrzeit.

Kann mir jemand sagen wo der Fehler liegt ?

Bin erst seit kurzem dabei PHP zu programmieren und mit SQL Abfragen kenne ich mich auch nicht besonders gut aus.
Mit Zitat antworten
  #2 (permalink)  
Alt 24-05-2007, 16:29
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Problem mit ORDER By

Zitat:
Original geschrieben von phpdeveloper
Kann mir jemand sagen wo der Fehler liegt ?
Der Fehler liegt hier:
Zitat:
Dabei wird geguckt in welchem Thread der neuste Beitrag ist, dieser wird bei jeder Antwort in lastpostdate und lastposttime geschrieben.
Es ist absolut unsinnig, Datum und Zeit auseinanderzureissen und in zwei Spalten abzulegen.

Schreibe es in eine Spalte; Nutze einen der Datums- und Zeit-Typen, den dir die DB zur Verfügung stellt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 24-05-2007, 16:42
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Es ist sogar schon unsinnig, die zeit des letzten Posts nochmal in die Thread-Relation zu schreiben. Die Zeit eines Posts steht doch bestimmt schon in dem Post selbst? Das ist überhaupt nicht normalisiert und redundant. Das was wahsaga bereits sagte kommt noch dazu.

Trotz allem:

mal "ORDER By lastposttime ASC, lastpostdate DESC" probiert?
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #4 (permalink)  
Alt 24-05-2007, 16:56
phpdeveloper
 Newbie
Links : Onlinestatus : phpdeveloper ist offline
Registriert seit: May 2007
Beiträge: 14
phpdeveloper ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für die hilfreichen Antworten!

Bin gerade dabei erstmal eine Tabelle names lastpost als Datentyp DATETIME anzulegen und dann dort den Datum mit Uhrzeit zusammen vom letzten Beitrag zu speichern.

Und MySQL ordnet dann auch automatisch richtig nach Datum UND Uhrzeit wenn ich ORDER By lastpost DESC benutze ?
Mit Zitat antworten
  #5 (permalink)  
Alt 24-05-2007, 17:11
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
... eine Tabelle names lastpost als Datentyp DATETIME anzulegen ...
hier ist ein wort falsch. welches?
Zitat:
Und MySQL ordnet dann auch automatisch richtig nach Datum UND Uhrzeit wenn ich ORDER By lastpost DESC benutze?
mal ausprobiert?
Mit Zitat antworten
  #6 (permalink)  
Alt 24-05-2007, 17:16
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja, sortiert es, aus einem ganz einfachen grund...

DATETIME ist systemintern eigentlich ein string... zugegeben mit besonderer Logik... however

die schreibweise des engl datumsformats gibt jedem teil der datumszeit-angabe sozusagen eine wertigkeit...

dadurch, dass der teil mit der höchsten dauer (jahr) ganz vorne steht und der mit der kleinsten dauer(sekunde) ganz hinten... die teile dazwischen sind ebenfalls "richtig" eingeordnet...

YYYY-MM-DD HH:MM:SS

2007-04-24 17:13:48
2007-05-24 17:13:48
2007-06-24 18:10:10

als einfache textfolge oder als zahl (ohne - : und blanks) betrachtet ergibt sich die sortierreihenfolge zwangsläufig...


greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #7 (permalink)  
Alt 24-05-2007, 17:50
phpdeveloper
 Newbie
Links : Onlinestatus : phpdeveloper ist offline
Registriert seit: May 2007
Beiträge: 14
phpdeveloper ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank für euere Hilfe und großes Lob an diese Community.
Konnte das Problem nun endlich lösen

Habe die Tabellenstruktur und die Abfragen nun so geändert das nur noch nach lastpost (DATETIME) sortiert wird.

Antwortet jemand auf ein Thread wird in der Tabelle thread der Eintrag von lastpost erneuert damit die Threads in der richtigen Reihenfolge angezeigt werden (neustes ganz oben etc.).

In thread werden nur noch die Zeitangaben createdate und createtime und lastpost gespeichert.
Createdate und createtime hab ich angelegt damit man noch sehen kann wann das Thread erstellt wurde.

In der Tabelle posts werde ich die Einträge createdate und createtime ganz raus nehmen da der gleiche Wert schon in der lastpost Spalte gesichert wird.

Zitat:
Original geschrieben von penizillin
hier ist ein wort falsch. welches?
Hab wohl Spalte und Tabelle vertauscht

Geändert von phpdeveloper (24-05-2007 um 17:54 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 24-05-2007, 18:09
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Herborn
Beiträge: 1.609
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Noch als Tipp, bevor du auf die Idee kommst das ausgegeben Datum zum Anzeigen mit Stringfunktionen zu bearbeiten damit es "deutsch" aussieht. DATE_FORMAT

http://dev.mysql.com/doc/refman/5.0/...on_date-format
Mit Zitat antworten
  #9 (permalink)  
Alt 24-05-2007, 21:19
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Zitat:
In thread werden nur noch die Zeitangaben createdate und createtime und lastpost gespeichert.
Createdate und createtime hab ich angelegt damit man noch sehen kann wann das Thread erstellt wurde.
Das is doch schon der gleiche Fehler wie beim "lastpost". Das ist nicht atomitär, nagut, es ist viel zu atomitär *g*! Normalisierung ist das Stichwort!
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:37 Uhr.