Hallo,
ich habe mal eine kurze Verständnisfrage:
Bei einer View ist es wohl nicht möglich, einen Parameter zuzuweisen - oder übersehe ich da etwas?
Ich kann nicht nachträglich das Ergebnis filtern, da der Parameter in der "not exist"-Klausel steckt und in der Rückgebemenge nicht mit enthalten ist.
Konkret will ich hier alle Vereinsmitglieder erhalten, die in einem bestimmten Turnier noch nicht eingesetzt sind.
Delphi-Quellcode:
CREATE VIEW CLUBMEMBERSFREEFORMELEE(
CLUBPOS,
CLUBID,
CLUBPOWERPOS,
CLUBPOWERID,
MEMBERPOS,
GID)
AS
select c.pos, c.gid, p.pos, p.gid, m.pos, m.gid from members m
join clubpowers p on (m.clubpowerid = p.gid)
join clubs c on (p.clubid = c.gid)
where (m.activate = 1) and
(not exists (select pl.gid from tournamentmeleeplayers pl
join tournamentsmelee t on (pl.tournamentmeleeid = t.gid)
where (pl.personid = m.personid) and (t.gid = :tgid) // hier geht es um :tgid
))
order by c.pos nulls last, c.gid, p.pos nulls last, p.gid, m.pos nulls last, m.gid
;
Ohne "and (t.gid = :tgid)" erhalte ich alle Vereinsmitglieder, die noch in KEINEM Turnier eingesetzt sind. Soweit funktioniert das
Nun möchte ich die Abfrage auf ein bestimmtes Turnier (t.gid) beziehen.
Ich bin dabei, dafür eine dynamische Abfrage zu regeln (also eine Select-Abfrage mit den jeweiligen Parametern).
Gibt es bessere Lösungen, die ich noch nicht gefunden habe?
Eine globale "Datenbankvariable" (in meinem Fall "tgid") wäre m.E. nützlich. Man könnte dann tgid einen Wert zuweisen (in meinem Fall varchar(50)) und künftig würde die View diesen Wert als Parameter benutzen.
Gibt es so etwas?
Stahli