0

"Teil-Text zählen, wenn" in bestimmter Spalte einer nicht-verknüpften, anderen Tabelle

Guten Morgen,

Newbie (sorry dafür) braucht Formelhilfe bei folgender Aufgabenstellung:

Ich würde gern für eine Erfolgsstatistik in einer nicht-verknüpften Tabelle (bsp. "Rennserie', davon gibts ca. 40 dazu 100% strukturell kongruente) in einer bestimmten Spalte (bsp. "Sieger") die Häufigkeit eines bestimmten Teilausdrucks zählen (bsp. "Heinz Dosenkohl", wobei "Heinz Dosenkohl" nur in einem Teil eines mehrzeiligen Textfeldes [Inhalt "Heinz Dosenkohl (D)", letzte Zeile: "Hersteller, Modell"] vorkommt) und in einer Auswertungs-Tabelle (bsp. "Auswertung") ausgeben. Der zu zählende Ausdruck wird in dieser Tabelle "Auswertung" im Formularfeld "Suchbegriff" angegeben, sollte also dort abgefragt und das Ergebnis bsp. in "Triumphe" als Zahl ausgegeben werden.

Formel in der Berechnung von "Triumphe" wäre also in etwa: Zähle, wenn Spalte "Sieger" in "Rennserie" den "Suchbegriff" in "Auswertung" enthält und werfe die Zahl aus.

So würde ich gern die Siege von Heinz Dosenkohl in der Rennserie zählen, weil alle Sieger in der Spalte "Sieger" aufgezählt sind. Sind also 10 Rennen in Rennserie eingetragen, steht "Heinz Dosenkohl 3x in der Spalte "Sieger". "Peter Spitznas" 2x, usw ...

Oben genannter Aufbau der gesuchten Formel – wenn umsetzbar – wäre dann ein pars-pro-toto für verschiedene weitere Abfragen, die analog dazu funktionierten: Pole Positions, Podiumsresultate, etc. Statt Fahrer könnten auch die Hersteller, ein Modell eines Herstellers oder auch die Nation des Fahrers auf diese Art ausgewerten werden … und genau das will ich tun. Kommt mir also eine neue Abfrage in den Sinn, lege ich in "Auswertung" einfach eine neue Zeile an, im Formularfeld "Suchbegriff" schreibe ich dann also mein Gesuch rein – alles andere sollte dann über die Berechnungen ablaufen, über Ansichten kann ich mir die Ergebnisse dann wie gewünscht visualisieren.

Leider mache ich gerade meine allerersten Gehversuche mit Datenbanken überhaupt, also auch mit Ninox, und bekomme die Kombination aus select, count, where und contains (was ich vermute, dass das der bunte Strauß an Funktionen ist, der hier, entsprechend kombiniert, benutzt werden könnte) nicht hin. Wäre für jeden Tipp oder jede Hilfestellung äußerst dankbar. Ich hoffe, ich habe es nicht zu umständlich erklärt. Bisher habe ich das in Ermangelung an Datenbank-Kenntnissen mit Excel-Formeln gemacht, aber das hat Ausmaße angenommen, die die Performance von Excel auf dem Mac komplett gesprengt hat. 

Vielen, vielen Dank im Voraus und viele Grüße,

helge.

5 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Helge:

    die formel wäre in etwa so:

    ---

    let mySearch:=Suchbegriff

    cnt (select Rennserie where contains (Sieger,mySearch))

    ---

    Leo

    • Helge_Gerdes
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Leo, Du bist eine Sensation.

     

    1.000 Dank für die ultra-schnelle und vorallem so perfekte Hilfe! Das hat schnurstraks funktioniert.

     

    Schönes Wochenende. Dein Name ist heute mein Schlachtruf!

    Viele Grüße, helge.

    • Helge_Gerdes
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo, liebes Forum,

     

    nachdem ich obenstehende Abfrage jetzt rund 200 Mal in unterschiedlichen Formen, Farben und Geschmäckern verwenden konnte (super, Leo, danke nochmal!) scheitere ich an der Version für Fortgeschrittene gleich schon wieder. Argh. Deswegen zwei Fragen:

     

    - Selbe Aufgabenstellung wie zuvor, nur mit zwei oder mehren Bedingungen, also "Suchbegriff" kombiniert (UND-Bedingung) mit "weiterer Suchbegriff". Überall dort, wo sich in einem Datensatz beides gleichzeitig findet sollte also etwas gezählt werden. Es handelt sich überall um Textfelder.

    Etwa, aber das haut nicht hin:

    let mySearch := 'SEARCH TERM';
    let mySeason := 'SEARCH SEASON';
    cnt(select 'RENNSERIE' where contains('RENNEN', mySearch) and where contains('SEASON', mySeason))

     

    - Gibt es irgendwo eine taugliche Erklärung/Schritt-für-Schritt-Anleitung für Formeln/Skripte, die so Unbedarfte wie mich dazu befähigen könnten, sich selbst zu helfen? Mit der Web-Dokumentation von Ninox komme ich (vielleicht ja, weil ich zu doof bin) nicht ernstlich weiter ...

     

    Danke schonmal für jedwede Hilfe.

    Und viele Grüße, helge.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Helge,

    ---

    let mySearch := 'SEARCH TERM';
    let mySeason := 'SEARCH SEASON';
    cnt(select 'RENNSERIE' where contains('RENNEN', mySearch) and contains('SEASON', mySeason))

    ---

    Die Anleitunge gibt es in Englisch hier: https://ninoxdb.de/de/manual/erweiterte-Berechnungen/funktions-und-sprachreferenz

     

    Logical Expressions
    Logical expressions check if something is the case or not. Most often you’ll need them to create specific filter rules or to make decisions within a calculation. A logical expression either returns true or false. The most common form of a logical expression is a comparison of two values, like:

    Amount > 100       -- greater than
    Amount < 100       -- less than Amount >= 100     -- greater than or equal to
    Amount <= 100     -- less than or equal to
    Amount = 100       -- equal
    Amount != 100     -- not equal

    Logical expressions may be combined by and, or, not.

    Age > 12 and Age < 18
    Status = 1 or Status = 2 or Status = 3
    not (Status = 4 or Status = 5)
    Status != 4 and Status != 5
    Note, the operator precedence is not -> and -> or.

     

    Leo

    • Helge_Gerdes
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

     

    top! Vielen Dank für die Hilfe! Versuche mich reinzufuchsen. ;o)

     

    Viele Grüße, helge.

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 5Antworten
  • 4140Ansichten