2017-01-03 3 views
-1

Ich habe eine Tabelle mit 2 Spalten: employee_email, manager_email - die angeben, wer der Manager eines bestimmten Angestellten ist.Überprüfen Sie den Manager

Ich möchte Fälle vermeiden, in denen A in einer Zeile der Manager von B ist; aber in einer anderen Reihe ist B der Manager von A.

Ich habe versucht, die folgenden zu verwenden, aber es scheint nicht richtig

select * 
from chart c1, chart c2 
where c1.employee_email = c2.manager_email 
and c1.manager_email = c2.employee_email 

Danke

+0

* A ist Manager des B; aber in einer anderen Reihe ist B der Manager von A * Wie ist das möglich? – Rahul

+0

"scheint nicht richtig". Sie sollten in der Lage sein zu überprüfen, ob es richtig ist oder nicht - Sie müssen nicht raten. Und wenn es nicht richtig ist, zeigen Sie die Ergebnisse Sie vs was Sie erreichen wollen, angesichts einer Reihe von Beispieldaten. – ADyson

+0

Was meinen Sie mit "Vermeiden"? Soll Ihre Anfrage eine solche Instanz zurückgeben? Versuchen Sie, eine Einschränkung einzurichten, die ein solches Auftreten verhindert? – xQbert

Antwort

0

Ist das Sie brauchen:

select * -- select columns here 
from chart c1 left join chart c2 
on c1.employee_email = c2.manager_email 
and not exists (
    select 1 from chart c 
    where c.manager_email = c1.employee_email 
    and c.employee_email = c2.manager_email 
); 
Verwandte Themen