SELECT MAX(spalte)...

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

  • SELECT MAX(spalte)...

    Hallo,

    ich baue für meinen Online Shop ein System in dem der Administrator die einzelnen Artikelkategorien in der Anordnung bzw im Rang individuell sortieren kann. Nach dessen Sortierung sollen die Kategorien dann für den Kunden in der Navigation aufgelistet werden.

    Ich habe dafür in der Kategorie Tabelle eine "rank" Spalte erstellt, wo der aktuelle Rank gespeichert wird.
    Um eine Kategorie nun um einen Platz nach oben zu verschieben, lasse ich mir die id, der zu verschiebenden Kategorie, per $_POST übermitteln. Anhand dieser id soll in der Tabelle der nächst kleinere rank Wert, sowie die zugehörige id ermittelt werden. Am besten in einer Abfrage.

    SELECT MAX(rank) AS rank, id FROM kategorie WHERE rank<zu_verschiebender_rank

    Anschließend würde ich die beiden Ranks durch ein Update vertauschen.

    Leider funktioniert die Select Anweisung nicht und ich weiß auch nicht ob es die beste Lösung ist. Am besten wäre eine Art swap Befehl, wo ich die rank's direkt miteinander vertauschen könnte.

  • #2
    du musst GROUP BY verwenden
    Mafia Browsergame - Scripts

    Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
    Albert Schweitzer (14.01.1875 - 04.08.1965)

    Kommentar


    • #3
      Also ich habe jetzt folgende Abfragen versucht, die jedoch alle nicht das gewünschte Ergebnis bringen:

      SELECT MAX(rank), id FROM kategorie WHERE rank<zu_verschiebender_rank GROUP BY id

      SELECT MAX(rank), id FROM kategorie GROUP BY id HAVING MAX(rank) < zu_verschiebender_rank

      Er liefert mir bei diesen Abfragen nicht die id von der Zeile die den größten rank nach dem zu verschiebenden rank hat. Verstehe auch nicht wieso ich das Gruppieren muss. MAX(rank) müsste doch eigentlich nur eine Zeile wiedergeben, wo ich halt die zugehörige id brauche.

      Danke

      Kommentar

      Lädt...
      X