Hilfe bei DB Abfrage

Begonnen von bert, 18 Februar 2007, 07:58:25

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

bert

Hallo,

ich habe bei folgender DB Abfrage ein Proble.

Auszug aus der DB

nr|heimteam|gastteam   |spieldatum |  datum_neu|
--------------------------------------------------------
1 |      6        |     5        | 20.03.2007| 30.03.2007
2        3        |     6        | 25.03.2007|                  |


Mit meiner Abfrage möchte ich nun folgendes erreichen.
Es soll mir z.B von Team 6 der nächste Spieltag angezeigt werde.
Funzt soweit, aber wenn in datum_neu ein Wert steht, soll dieser in die Sortierung mit einbezogen werden.

In obigen Beispiel sollte allso der Datensatz nr. 2 angezeigt werden.
Bei mir wird aber Datensatz 1 angezeigt.
Wer hat einen Lösungsvorschlag?


$sql = "SELECT  s.id,s.spielnr, s.spieldatum , s.gruppe, s.spielzeit AS zeit_neu, s.spielort,s.runde,s.datum_neu,
                t1.spielzeit,t1.id_team, t1.team AS heimteam, t2.team AS gastteam, t1.halle
                FROM ${prefix}_liga_spielplan AS s
                 JOIN ${prefix}_liga_team AS t1 ON t1.id_team = s.heimteam
                 JOIN ${prefix}_liga_team AS t2 ON t2.id_team = s.gastteam
    WHERE (s.spieldatum >= '$timestamp'OR s.datum_neu >= '$timestamp')
               AND (s.heimteam = '6' OR s.gastteam = '6')
          ORDER BY s.spieldatum ASC, s.datum_neu  ASC LIMIT 1";


jubilee

ZitatIn obigen Beispiel sollte allso der Datensatz nr. 2 angezeigt werden.

Das kommt darauf an, mit welchem Wert $timestamp belegt ist.
Wenn timestamp mit dem aktullen (jetzigen) Datum belegt ist, sollten erstmal 2 Datensätze angezeigt werden. Da aber am Ende des SQL-Statements ASC LIMIT 1 steht, wird der logisch erste Datensatz angezeigt.

Die Sortierung ORDER BY s.spieldatum ASC, s.datum_neu   sortiert erstmal die Spalte Spieldatum.
Erst wenn dort gleiche Daten stehen, wird als 2 Sortierung die Spalte datum_neu herangezogen.

bert

hallo,

$timestamp ist das aktuelle datum.( UNIX-Timestamp) 

aber wie bekomme ich nun meine abfrage hin.
ich stell mir das mal so vor.

wenn datum_neu !='' dann nehme für spieldatum ->datum_neu in die sortierung.

in den spalten spieldatum und datum_neu ist das datum auch im UNIX-Timestamp


jubilee

Versuchs einmal so herum :
Zitat....ORDER BY s.datum_neu, s.spieldatum ASC LIMIT 1"; ........

bert

 ;) ;) ;) Du bist der BEEEEEEEEEste jubilee  :thumbup: :thumbup: :thumbup: :thumbup:

Danke es funzt