0

select ... order by ... desc - wie geht das?

Hallo liebe Ninoxler!

Wie kann ich die Sortierung in einem Ninox SELECT "herumdrehen" - so wie in SQL:

select ... order by ... desc

11 Antworten

null
    • Rafael_Sanchis
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Select table order by  -field

    • Pushing the Boundaries of Ninox
    • Gotje_Ing
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Moin,

    ein Umdrehen mit -field können wir nicht empfehlen, da es nicht in jedem Ausführungskontext sauber funktioniert und manche Felder nicht mit einem - gedreht werden können. Sauber ist diese Variante:

    let mySelect := (select Tabelle where ... order by XYZ);
    mySelect := for i in range(cnt(mySelect), 0, -1) do
                        item(mySelect, i - 1)
                    end

    Dieser Code funktioniert für alle Feldtypen, ist um ein vielfaches schneller als die reverseAscii Funktion hier z.B. https://forum.ninox.com/t/p8hrzqj?r=h7hraxw und funktioniert in jedem Ausführungskontext korrekt.

    Grüße Philipp

      • qd_team
      • vor 3 Tagen
      • Gemeldet - anzeigen

       Hallo Philipp! Vielen Dank für den Tipp! 🙏 Hat super funktioniert.

      • qd_team
      • vor 3 Tagen
      • Gemeldet - anzeigen

      ich habe das mal als Feature Request formuliert: https://forum.ninox.de/t/x2yppv4

      • mirko3
      • vor 2 Tagen
      • Gemeldet - anzeigen

       schöne Lösung. M.E. kann die range() ohne step geschrieben werden und damit entfällt die Subtraktion im item(). Ist nur Makulatur, deine Idee ist Klasse. Mirko

      let tab := ((select Tabelle) order by Text);
      for i in range(cnt(tab), -1) do
          item(tab, i).Text
      end
      • Pushing the Boundaries of Ninox
      • Gotje_Ing
      • vor 2 Tagen
      • Gemeldet - anzeigen

       Ich glaube das hatte ich drin, damit ich in JSONs das syntaktisch identisch anwenden kann, der Test ist aber schon ein bisschen her. 
      Danke für die Kürzung.

      Grüße Philipp

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Und wie sieht es mit rsort(select ...) aus?

      • Pushing the Boundaries of Ninox
      • Gotje_Ing
      • vor 3 Tagen
      • Gemeldet - anzeigen

       
      Nein, rsort() sortiert nur alle Einträge rückwärts nach Nr. Nicht nach dem zuvor sortierten Wert!
       

      • + Maßanzug statt Massenware +
      • RonaldP
      • gestern
      • Gemeldet - anzeigen

       ,

      ah, das kommt dann auf den Anwendungsfall an.
      Wenn ich wirklich nur Zahl haben und sortieren will, funktioniert es so schon:

      rsort((select Values).Zahl)
      
      • Pushing the Boundaries of Ninox
      • Gotje_Ing
      • gestern
      • Gemeldet - anzeigen

       Du hast in diesem Fall den "Link" zwischen den Werten und den Records getrennt. 
      Ein rsort() in diesem Fall gibt dir lediglich ein Zahlarray sortiert nach Wert. Du kannst aber nicht mehr z.B. den zugehörigen Titel aus dem Record ziehen. Insofern ist es in fast allen Fällen, wo ein select ... desc in Verwendung kommen würde nicht relevant. 

      • + Maßanzug statt Massenware +
      • RonaldP
      • gestern
      • Gemeldet - anzeigen

       ,
      jup, das meinte ich mit: "Wenn ich wirklich nur Zahl haben und sortieren will".

      Hab inzwischen den Feature-Request-Post dazu gesehen.
      Darin ist es noch expliziter beschrieben und meint es so wie du beschrieben hast...

Content aside

  • Status Answered
  • gesternZuletzt aktiv
  • 11Antworten
  • 79Ansichten
  • 5 Folge bereits