php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.01.2007, 16:08  
Benutzer
 
Registriert seit: 26.07.2006
Beiträge: 36
leuktra
Standard Sortierreihenfolge nach Eintrag oder letzter Änderung

Hallo!

ich habe folgende Abfrage (Kurzform):

PHP-Code:
$result = @mysql_query("SELECT rub.id, rub.rubriken, info.id, info.schluessel, info.ueberschrift, info.dateiname, info.eintrag, DATE_FORMAT(eintrag, '%d.%m.%y') AS form_eintrag, info.geaendert, DATE_FORMAT(geaendert, '%d.%m.%y') AS form_geaendert FROM info INNER JOIN rubriken ON (rub.id = info.schluessel) WHERE info.schluessel = ".(integer)$_GET['id']." ORDER BY info.eintrag, info.geaendert DESC") OR DIE (mysql_error());
while (
$row mysql_fetch_array ($result))
{
echo 
''.htmlentities($row['ueberschrift']).' ('

if(
$row['form_eintrag'] < $row['form_geaendert'])
{
echo 
''.$row['form_eintrag'].'';
}
else 
{
echo 
''.$row['form_geaendert'].'';
}
echo 
')'
Nun möchte ich erreichen, daß die Einträge - abhängig vom Datum des Eintrags oder
vom Datum der letzten Änderung chronologisch absteigend ausgegeben werden.

Beispiel: Ist das Datum des letzten Eintrags (DB-Felder "eintrag") vom 26.01.07
und wird nun eine älterer Eintrag (DB-Felder "geaendert") heute 29.01.07 geändert,
dann soll der geänderte Eintrag wieder ganz oben erscheinen.

Der Typ der DB-Felder "eintrag" und "geaendert" ist datetime.

Ich weiß auch nicht, ob der Lösungsansatz mit der if-Abfrage optimal ist, vielleicht
gibt es ja einen eleganteren Weg?
leuktra ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.01.2007, 16:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wie wäre es mit MAX()? Wobei MAX() ein Aggregatszustand sein dürfte, musst du mal schauen ob du das so einfach einbauen kannst.
Zergling-new ist offline   Mit Zitat antworten
Alt 29.01.2007, 17:01  
Benutzer
 
Registriert seit: 26.07.2006
Beiträge: 36
leuktra
Standard

Hallo Zergling,

danke für Deinen Tip ... gibt es eventuell noch einen anderen Lösungsweg?
leuktra ist offline   Mit Zitat antworten
Alt 29.01.2007, 17:19  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Wenn ich es richtig verstanden habe
Code:
ORDER BY IF(info.eintrag > info.geaendert, info.eintrag, info.geandert) DESC
DiBo33 ist offline   Mit Zitat antworten
Alt 29.01.2007, 17:23  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ne MAX() ist wirklich komplett ein Aggregatszustand.

Die korrekte Sortierung kannst du aber dennoch mit MySQL's IF() erreichen.
ORDER BY IF (info.eintrag > info.geaendert, info.eintrag, info.geaendert) DESC

Eine bessere Lösung fällt mir spontan nicht ein.
Zergling-new ist offline   Mit Zitat antworten
Alt 29.01.2007, 18:44  
Benutzer
 
Registriert seit: 26.07.2006
Beiträge: 36
leuktra
Standard

Hi Leute,

danke für Eure Hilfe - es funktioniert!

Noch eine Frage - dies muß so bleiben oder gibt es eine elegantere "Schreibweise"?

PHP-Code:
 ...
if(
$row['form_eintrag'] > $row['form_geaendert'])
{
echo 
''.$row['form_eintrag'].'';
}
else
{
echo 
''.$row['form_geaendert'].'';
} ... 
leuktra ist offline   Mit Zitat antworten
Alt 29.01.2007, 18:57  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Kannst du auch direkt im SELECT anwenden
Code:
 DATE_FORMAT(IF(eintrag > geaendert, eintrag, geaendert), '%d.%m.%y') AS form_max_datum
DiBo33 ist offline   Mit Zitat antworten
Alt 29.01.2007, 19:20  
Benutzer
 
Registriert seit: 26.07.2006
Beiträge: 36
leuktra
Standard

Hi DiBo 33,

Suuuper! Daaanke!
leuktra 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
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
Mysql Eintrag über mehrere Zeielne Eintrag funzt nicht PHP Tipps 2006 3 14.03.2006 19:38
Simple XML: neuer Eintrag? Bunnydog PHP Tipps 2007 5 30.12.2005 11:33
Eintrag löschen wenn Seite geschlossen wird krummzahn PHP Tipps 2007 7 06.12.2005 21:29
Eintrag 6-16 auswählen! dethlef14 Datenbanken 8 20.10.2005 12:20
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
Letzter DB Eintrag solitaer Datenbanken 8 27.09.2005 18:46
[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
wo ist der Fehler? Eintrag aus Datenbank löschen Ente PHP Tipps 2004 2 24.08.2004 15:04
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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
if($form_eintrag==\\ or $form_eintrag==\viagra\) { echo; } else {

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