0

Select Tabelle Group by Feld

Hallo,

ich möchte per Funktion eine Tabelle zusammenfassen. Das heißt ich habe eine Tabelle mit mehrfach vorkommenden Werten, z.B. Kategorien eingehender Anfragen.

Nun möchte ich in einer Selektion für eine dynamische Mehrfachauswahl eine Tabelle mit den exisitierenden Werten erzeugen, in der die Werte aber nur einmal vorkommen.

In SQL ist das

SELECT Tabelle1 GROUP BY Kategorie;

Gibt es ein Äquivalent in Ninox?

12 Antworten

null
    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Florian,

     

    vielleicht hilft Dir unique() weiter?

     

    lg, Torsten

    • supiflo
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Leider nein. Die ursprüngliche Tabelle hat mehr Felder als die Kategorie. Beispielsweise: Kategorie, Datum der Anfrage, Bearbeiter.

    Außerdem funktioniert unique nur mit Arrays, oder?

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    unique() gibt Dir ein Array zurück, in dem keine Einträge doppelt vorkommen, für Dich also 

     

    unique((select Tabelle1).Kategorie)

     

    Ob und wie das im Zusammenhang mit dyn. Mehrfachauswahlfeldern funktioniert, kann ich mangels eigener Erfahrung mit diesem Feldtyp nicht beantworten.

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi, ich fürchte, das wird so nicht funktionieren. Da sich unique() ja immer auf bestimmte Felder bezieht, wüsste jetzt nicht, wie es sich bei dynamischen Auswahlfeldern direkt im "select" verwenden ließe.

     

    Ok, dass ich es nicht weiß, muss natürlich nichts heißen, aber dynamische Auswahlfelder arbeiten ja mit Datensatznummern. Welche Felder der betreffenden Datensätze zur Auswahl angezeigt werden sollen, bestimmt man an anderer Stelle.

     

    Aber im Ergebnis ist es halt immer eine einfache Liste von Werten. Insofern stellt sich die Frage, was in dem dynamischen Auswahlfeld denn angezeigt werden soll. Wenn es die Kategorien selbst sind, dann würde ich die in eine extra Tabelle schreiben und beim "select" auf die Kategorien-Tabelle zugreifen.

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Mitunter aus diesem Grund benutze ich die dynamischen (Mehrfach-)Auswahlfelder überhaupt nicht - wenn dann löse ich's durch Verknüpfungen, die ich mittlerweile ja auch ähnlich wie Auswahlfelder darstellen kann...

    Ich persönlich verstehe unter "dynamischen" Auswahlfeldern im Übrigen sowieso etwas ganz anderes wie seitens Ninox gelöst. Für mich hat der Anwender bei dynamischen Auswahlen selbst die Möglichkeit, Optionen hinzuzufügen und das direkt (Achtung:) dynamisch direkt im Auswahlfeld... ;-)

    • Tacho
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Thorsten

    so wie Du, versteht es wohl nahezu jeder, der von "dynamischen Auswahlfeldern" spricht. Einzig NINOX hat hier wiederholt die Sichtweise: "Ein Geisterfahrer? Hunderte!"

    Gruß
    Tacho

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Der Fairness halber: In meiner Erinnerung an unzählige Diskussionen zu diesem Thema ging es immer um den Wunsch vieler Nutzer, die Auswahloptionen "dynamisch" aus einer Tabelle auslesen zu können. Die dynamischen Auswahlfelder bieten genau das und erschließen damit ganz neue Anwendungsbereiche.

     

    Neue Optionen lassen sich hinzufügen, indem man der Quelltabelle neue Datensätze hinzufügt (was auch aus der Zieltabelle heraus möglich ist). Sicher lässt sich das Ganze noch komfortabler gestalten, keine Frage - kommt ja vielleicht irgendwann noch -, und am Anfang war ja auch die Handhabung sehr hakelig, aber die entscheidende Grundfunktionalität ist zweifellos da. Und für mich von großem Nutzen.

     

    Man kennt ja Florians Datenmodell und genaue Anforderungen nicht, aber wenn es bspw. darum ginge, die Quelltabelle sozusagen nach Kategorien zu filtern, dann könnte man selbige wie gesagt in eine eigene Tabelle packen, als Auswahl anbieten und im nächsten Schritt in einem zweiten dynamischen Auswahlfeld nur noch die Datensätze der gewählten Kategorie anzeigen zu lassen. Das ließe sich über eine "where"-Bedingung beim "select" machen.

     

    Ich habe solche dynamischen, mehrstufigen Auswahlen selbst schon genutzt. Wäre vorher bei überschaubarem Aufwand gar nicht möglich gewesen.

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ... alles Dinge, die ich auch mit Verknüpfungen (großteils sogar bequemer) lösen kann. Ich seh' nach wie vor den Mehrwert nicht. Die Option, Verknüpfungen Auswahl-like anzuzeigen war für mich der größere Meilenstein.

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Zusammen,

    die Formel für value des dyn. MFAF wäre:

    ---

    let myTab := (select Tabelle);
    let myArray := sort(unique(myTab.Kategorie));
    for i in myArray do
    first(myTab[Kategorie = i])
    end

    ---
    bei Name muss man dann die Kategorie auswählen.

    bei einer Tabelle mit 12000 Datensätze und 300 Kategorien ist die Verzögerung beim Auswahl  - 1,5 Sekunden. Es werden tatsächlich alle 300 zur auswahl gestellt (es gab irgendwann die Anmerkung dass die dynamischen Felder nur 100 Datensätze zulassen).

    Leo

      • Tomi.2
      • vor 11 Monaten
      • Gemeldet - anzeigen

       eine perfekte Lösung!!! 😍👍👍👍

      Um die Wartezeit der Auslesung zu verkürzen kann man auch zusätzlich das Feld [Active] und jeweils mindestens eines der Felder mit "true" herausfiltern. Dann in der Abfrage "select Table where Active = true" erweitern.

      let myTab := (select Tabelle where Active = true);
      let myArray := sort(unique(myTab.Kategorie));
      for i in myArray do
      first(myTab[Kategorie = i])
      end

      Dann gehts "ratz fatz".
      Ist halt etwas mehr Arbeit beschleunigt aber immens.

      (Die Markierung geht sicher auch über eine geschickt formulierte Massenbearbeitung.)
      Da ist aber wieder Leo gefragt.
      Das ist mir zu kompliziert.

      Wir haben das in unserer Lego Datenbank benutzt.
      Da werden ALLE Legosets von 1943 bis 2023 aufgeführt und nur die Kategorien die der Besitzer wirklich aufnehmen katalogisieren möchte sollten aufgeführt werden.

      Danke an Leo!!!

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Nicht verzagen, Leo fragen! 👍

      • Maurice
      • vor 11 Monaten
      • Gemeldet - anzeigen

       Wahrlich. Genau dieses Problem gehabt und Leo liefert den perfekten Code. Gleich in der DB "Ninox Tipps" dokumentiert.