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
-
Hallo Florian,
vielleicht hilft Dir
unique()
weiter?lg, Torsten
-
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?
-
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.
-
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.
-
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... ;-)
-
@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 -
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.
-
... 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.
-
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
-
Nicht verzagen, Leo fragen!
Content aside
- vor 11 MonatenZuletzt aktiv
- 12Antworten
- 1512Ansichten
-
2
Folge bereits