Leidige Abfrage, ich komm nicht dahinter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Leidige Abfrage, ich komm nicht dahinter

    Hallihallo,

    ich steh vor folgender MySQL-Problematik:

    In einer Suchmaske kann der User *unter anderem* auswählen, ab welchem und bis zu welchem Erscheinungsjahr Schallplatten aufgelistet werden.
    In der DB hat das Release-Datum jedoch kein konformes Format, sprich, da steht manchmal 27.1.2002, oder auch mal nur 2000 (das ganze ist VARCHAR). Die Jahreszahl jedoch ist immer hintendran, und vierstellig (was die Sache ja wieder etwas angenehm macht). An diesem "Format" kann aber auch nichts geändert werden, da der genaue Erscheinungstermin nicht immer bekannt ist.

    Was aber alles verkompliziert, ist, wie oben schon angedeutet, daß dies nur die halbe Miete der Suchabfrage ist. Es gibt noch weitere Auswahlkriterien (Interpret, Titel usw.), welche jedoch in der Abfrage schon drin sind und zusammen auch harmonisch funktionieren.

    Nur wie krieg ich jetzt die zwei Datums-Grenzen rein?
    Hier mal ein Beispiel einer Abfrage *ohne* die beiden:

    SELECT * FROM artikel
    WHERE
    (
    MATCH (artist) AGAINST ('Neophyte')
    OR
    MATCH (titel) AGAINST ('Neophyte')
    OR
    MATCH (label) AGAINST ('Neophyte')
    )
    AND kategorie='1'
    AND richtung='1';


    Da würd ich das gern noch irgendwie mit einbauen (unten noch ein AND ... ran). Ich hab das Manual virtuell durchgewälzt, und bin dabei auf LIKE gestoßen, in Verbindung mit dem Platzhalter %, desweiteren auf BETWEEN min AND max, und hab da so bißchen rumgefriemelt, kam aber nichts gescheites bei raus


    Hat vielleicht jemand ne Idee?
    "...vielleicht stehe ich vor dir und du erkennst mich nicht. Spielt das eine Rolle? Wir sah'n ins gleiche Licht..."

  • #2
    naja,

    so spontan würd ich sagen:

    das sql-format 'DATE' hat als standard wert 00-00-0000 oder so. demnach sollte man dieser spalte werte der form 01.01.1970, 00.10.1970 und 00.00.1970 zuweisen können (edit: steht im manual, sollte gehn)... wenn das geht sollte es auch dein problem lösen, spalte umformatieren und dann abfragen

    Code:
    SELECT * 
    FROM artikel 
    WHERE des_datum < '00-00-2010'
    AND des_datum > '00-00-1984'
    oder so.

    achja, das format lautet YYYY-MM-DD, oberes ist falsch herum.
    Zuletzt geändert von derHund; 26.11.2003, 06:20.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Hab auf DATE-Format gewechselt, funktioniert jetzt prima.

      Hatte mir den Format-Wechsel komplizierter, wenn nicht sogar unmöglich vorgestellt, da sich schon über 1500 Artikel in der DB befinden. Hat sich aber herausgestellt, daß nur ein Zehntel davon überhaupt ein Releasedatum eingetragen hatte, und das ließ sich durch ein kleines Script schnell in eine DATE-Spalte schieben.

      Ich danke dir, derHund
      "...vielleicht stehe ich vor dir und du erkennst mich nicht. Spielt das eine Rolle? Wir sah'n ins gleiche Licht..."

      Kommentar

      Lädt...
      X