Diesmal geht es um eine Abfrage. Ich erklär das mal so:
Eine Person X leiht sich etwas bei Person Y. Also in einer Tabelle steht das Feld „Person“ und das Feld „leiht sich bei“. Jetzt leiht sich Person X noch etwas bei Person Z.
Zuguterletzt leiht sich Y etwas bei X.
X -> Y
Y -> Z
Y -> X
Wie kann ich nun eine Abfrage definieren, die mir nur die Personen ausgibt, die sich gegenseitig etwas ausgeliehen haben ?
Als Ergebnis quasi:
X Y
Wenn mir da jemand Helfen könnte wäre ich sehr dankbar.
Wie kann ich nun eine Abfrage definieren,
die mir nur die Personen ausgibt, die
sich gegenseitig etwas ausgeliehen haben
?
Als Ergebnis quasi:
X Y
Wenn mir da jemand Helfen könnte wäre ich
sehr dankbar.
Hi,
Eine mögliche Lösung:
Select Person as Person1, ‚‘ as Zeichen, [leiht sich bei] as Person2 from Tabelle as t1 where exists (select ‚X‘ from Tabelle as t2 where t1.[leiht sich bei] = t2.person and t1.person = t2.[leiht sich bei]);
Sie hat zwei Nachteile:
1.Für das Paar X,Y erscheinen zwei Datensätze (XY und YX).
2. Zirkelabhängigkeiten erkennst Du nicht
(X->Y, Y->Z, Z->X).
Wenn’s hilft…
Gruß
J.
Eine Lösung
die schön funktioniert. Die Tabelle heißt „Ausleihe“, die Felder „Person“ und „leihtvon“. Außerdem sollten die Personen mit a, b, c usw. benamt sein.
SELECT distinct IIf([AUSLEIHE]![PERSON]""))
ORDER BY IIf([AUSLEIHE]![PERSON]
Auf den Trick mit Iif war cih nicht gekommen.
Hier eine Abwandlung mit Gruppierung:
SELECT IIf([t1].[person]" & [t1].[leiht sich bei],[t1].[leiht sich bei] & „“ & [t1].[person]) AS Paare
FROM Tabelle AS t1 INNER JOIN Tabelle AS t2 ON (t1.Person = t2.[Leiht sich bei]) AND (t1.[Leiht sich bei] = t2.Person)
GROUP BY IIf([t1].[person]" & [t1].[leiht sich bei],[t1].[leiht sich bei] & „“ & [t1].[person]);