0

m:N select Abfrage

Hallo zusammen 

Ich habe folgende Problemstellung: 

 

 

Die Mitarbeiter sind Teammitglieder verschiedener Teams (m:n Beziehung)

Mitarbeiter können mehre Einsatzpläne haben (1:N)

 

Wie würde man per select-Abfrage alle Einsatzpläne der Mitarbeiter aus Team 1 herausbekommen?

select Einsatzplan where Mitarbeiter. Teammitglied.Team = 1

geht leider nicht, da es sich um eine Liste der Mitglieder handelt.

Der Weg über:  myTeam.Teammitglied.Mitarbeiter. Einsatzpläne gibt zwar die richtige Liste der Einsatzpläne zurück, hat aber falsches Datentyp:

 Besten Dank im Voraus!

7 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Hallo Danko, wenn man über die Bezeichnung des Teams (z. B. "Team 1") filtern will, könnte man es so versuchen (Code für eine Ansicht):

    let myTeam := "Team 1";
    select Einsatzplan where contains(concat(Mitarbeiter.Teammitglied.Team.Bezeichnung), myTeam)
    
      • Danko_Petrovic.1
      • vor 10 Monaten
      • Gemeldet - anzeigen

       vielen Dank!  Das ist mir auch in Sinn gekommen, Problem entsteht aber mit Team-Bezeichnungen: "Team 1"; "Team11"; "Team111"  

      Abfrage über "Team 1" wird aber alle drei zurückgeben...

      • Geschäftsführerin bei Kennes Digital
      • Stefanie_K
      • vor 10 Monaten
      • Gemeldet - anzeigen

       

      Wenn du die einzelnen Werte aus Mitarbeiter.Teammitglied.Team.Bezeichnung mit einem Zeichen trennst, dann findet er auch nur diesen einen Wert.

      ... contains(“#” + join(Mitarbeiter.Teammitglied.Team.Bezeichnung, “#”) + “#”, “#” + myTeam + “#”)

    • mirko3
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Da contains auch bei Arrays funktioniert, müßte es so ausreichen. Return ist ein Array der ID aller Einsatzpläne zum passenden Team. Mirko

    let myTeam := "Team 111";
    (select Einsatzplan where contains(Mitarbeiter.TeamMitglied.Team.Bezeichnung, myTeam)).number(Nr)
    
      • Ninox-Professional
      • planoxpro
      • vor 10 Monaten
      • Gemeldet - anzeigen

      Wobei man das ".number(Nr)" für eine Ansicht auch weglassen könnte (bzw. sollte).

      Aber man sieht mal wieder: Viele Wege führen nach Rom. Zumindest technisch. Denn - ohne das Szenario genau zu kennen: Das Datenmodell ist mir nicht ganz klar. Einsatzpläne werden Mitarbeitern zugeordnet, welche aber Mitglied mehrerer Teams sein können. Könnte es von der Herangehensweise eventuell sinnvoller sein, die Einsatzpläne mit den Teams zu verknüpfen und diesen dann verfügbare Mitarbeiter zuzuordnen? Nur so als Denkanstoß.

      • mirko3
      • vor 10 Monaten
      • Gemeldet - anzeigen

      Da gebe ich Dir pauschal völlig recht. Mit number(Nr) hatte ich es auf ein Funktionsfeld bezogen, damit man erstmal eine Anzeige hat, die zur Kontrolle dient. Der Code von Danko sah so aus, als ob er genügend Scripterfahrung hat für den Rest. Und mit Rom sind wir uns in jedem Fall einig ;-) Hast mich schon oft genug inspiriert.

      • Ninox-Professional
      • planoxpro
      • vor 10 Monaten
      • Gemeldet - anzeigen

       

      Ich bin halt ein Klugscheißer ... 😉

      Allerdings nicht (nur) um des Klugscheißens willen, sondern eher im Hinblick auf Leser, die weniger Erfahrung mit solchen Dingen haben und dann nicht verstehen, warum in der Ansicht nichts angezeigt wird, obwohl sie den Code doch 1:1 per Copy & Paste übernommen haben ... Deshalb erlaube ich mir manchmal solche Ergänzungen.

Content aside

  • vor 10 MonatenZuletzt aktiv
  • 7Antworten
  • 102Ansichten
  • 4 Folge bereits