Problem MySQL

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

  • Problem MySQL

    Hi!

    Ich habe hier ein Problem mit einer Abfrage
    Die Abfrage wird vorher dynamisch "zusammengebaut".

    PHP-Code:
    SELECT 
    FROM 
    film
    .products_dvd 
    WHERE 1 
    AND 
    id='9080' OR id='23229' OR id='8830' OR id='5111' 
    OR id='11006' OR id='12515' OR id='12844' OR id='14628' 
    OR id='16076' 
    LIMIT 0,25 
    Logischerweise funktioniert diese Abfrage mit einem Problem:

    Als erstes Ergebnis wird mir der Datensatz mit der ID 5111, dann 8830, dann 9080 usw. gezeigt.
    Ich will aber genau die Reihenfolge, die in der Abfrage steht haben....

    Kann mir da jemand helfen?

  • #2
    Was soll denn das "WHERE 1 AND irgendwas", das ist doch semantisch nur "WHERE irgendwas"?

    Zum Sortieren gibt es ORDER BY.

    Kommentar


    • #3
      Hi!

      Das mit dem "WHERE 1" ist historisch gewachsen...
      Da ich die SQL dynamisch zusammenbaue und an zif verschiendenen Orten nutze muss das so sein da es bei einem anderen Anwendungszweck in einen Fehler laufen würde.


      Das mit der mathematisch nicht beschreibbaren Reihenfolge dachte ich mir....
      Da muß ich halt eine Lösung finden...
      Trotzdem Danke!

      Kommentar


      • #4
        Du kannst so etwas wie
        Code:
        SELECT * 
        FROM film.products_dvd 
        WHERE id IN (9080, 23229, 8830, ...) 
        ORDER BY 
          id = 9080 DESC,
          id = 23229 DESC,
          ...
        verwenden, eventuell gehts noch einfacher.

        Zahlen sind btw Zahlen.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          Zum Sortieren gibt es ORDER BY.
          Schon klar...
          Aber das funktinoniert ja hier nicht.

          Kommentar


          • #6
            Original geschrieben von derHund
            Du kannst so etwas wie
            Code:
            SELECT * 
            FROM film.products_dvd 
            WHERE id IN (9080, 23229, 8830, ...) 
            ORDER BY 
              id = 9080 DESC,
              id = 23229 DESC,
              ...
            verwenden, eventuell gehts noch einfacher.

            Zahlen sind btw Zahlen.

            Super!

            Damit hast Du mir sehr geholfen....
            Vielen Dank!

            Kommentar

            Lädt...
            X