0

select Anfrage für Ansicht Feld

Hallo!
Ich arbeite an einer Datenbank zur Verwaltung und Organisation eines Sportteams.
Sportler (Tabelle Personen) können an diversen Wettbewerben (Tabelle Events) teilnehmen.
In der Datenbank wird diese Teilnahme in der Tabelle Team abgebildet.

Sportler, aber auch andere Personen (zB Fans), können für jedes Event auch Hotels buchen.
Dies wird in der Tabelle Zimmer Buchung abgebildet.

In einem Dashboard möchte ich nun mittels einer Ansicht nur die Hotelbuchungen von Teilnehmern eines bestimmten Wettbewerbs anzeigen lassen.

Im Dashboard gibt es eine Verknüpfung mit der Tabelle Events.
In der Tabelle Zimmer Buchung gibt es eine Verknüpfung mit der Tabelle Personen.
In der Tabelle Personen gibt es eine Rückverknüpfung (mit Teilnahmen bezeichnet) mit der Tabelle Team.
In der Tabelle Team widerum gibt es eine Verknüpfung mit der Tabelle Events.

Ich hätte mir dazu folgende select Abfrage im Dashboard für die Ansicht überlegt:

let myEvent := Event;
select 'Zimmer Buchung' where Person.Teilnahmen.Event = myEvent

Das funktioniert aber nicht. Ich verstehe allerdings nicht, warum nicht...
Kann mir da vielleicht jemand helfen?

Danke!
Liebe Grüße,
Wolfgang

6 Antworten

null
    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Wolfgang,

    wenn ich allles richtig verstanden habe, sollte es auch ohne select klappen:

    ---

    Event.Team.Person.'Zimmer Buchung'

    ---

    Allerdings muss du prüfen ob die Verknüpfungen wirklich so heißen.

    Leo

    • info.28
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Leo!
    Danke für deine Antwort, aber das funzt leider auch nicht nach Wunsch.
    Theoretisch müssten das die richtigen Verknüpfungen (Teilnahmen = Bezeichnung für Rückverknüpfung zur Tabelle Team) sein:

    Event.Teilnahmen.Personen.'Zimmer Buchung'


    Es werden mir damit ALLE Zimmer Buchungen angezeigt. Also nicht beschränkt auf das im Verknüpfungsfeld ausgewählte Event.

    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Dann vielleicht so:

    ---

    let me := this;
    (select Personen)[cnt(Teilnahmen[Event = me.Event]) != 0].'Zimmer Buchung'

    ---

    Leo

    • info.28
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo,
    vielen Dank, fast wärs das schon 😀

    Es werden so jetzt nur noch Zimmer Buchungen von den Teilnehmern beim ausgewählten Event angezeigt. Allerdings ALLE Zimmer Buchungen dieser Teilnehmer. Also auch von anderen Events, wo diese Teilnehmer auch Zimmer gebucht hatten.
    Zur Erklärung: Die Zimmer Buchungen sind auch über ein Verknüpfungsfeld "Events" verbunden.

    Ein Event stellt sowas wie einen "Geschäftsfall" dar, in dem sämtliche Angelgenheiten abgewickelt werden. Also Teilnehmer Organisation, Ergebnisstatistiken, Hotelbuchungen, finanzielle Statisktiken...

    Ich hab versucht deinen Code weiter zu verarbeiten, aber ich verstehe diese Syntax mit den eckigen Klammern in Zusammenhang mit select leider nicht. Wo kann ich mich da schlau machen?

    Danke nochmal für deine Hilfe.

    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Wolfgang,

    es wäre hilfreich, wenn du ein komplettes Datenmodel preis gibs, anstatt dieses stückhenweise zu verraten. Wenn die Zimmerbuchungen mit der Tabelle Events verknüpft ist, dann kann man die Buchungen im Dashboard bestimmt auch so sehen:

    ---

    Event.'Zimmer Buchung'

    ---

    Leo

    • info.28
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ja, die Tabellen sind verknüpft. Aber ich würde ja nicht nur gerne die Zimmerbuchungen zu einem Event rausfiltern, sondern zusätzlich noch die Zimmerbuchungen von Teammitgliedern zu einem Event rausfiltern.

    Ich tu mir schwer, das genauer zu erklären. Ich hänge hier mal den Screenshot zum Datenmodell an.
    Das Dashboard, von dem ich oben gesprochen habe, liegt in der Tabelle "Hotel Manager"

    Bildschirmfoto 2022-01-02 um 22.51.22