2017-01-03 40 views
-1

我有一張有2列的表格:employee_emailmanager_email - 它表明誰是特定員工的經理。交叉檢查自己的經理

我想避免一行中A是B的經理的情況;但在另一行中,B是A的經理。

我嘗試使用以下,但它似乎並不正確

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

謝謝

+0

* A是B的經理;但在另一行中,B是A的經理*這怎麼可能BTW? – Rahul

+0

「似乎不正確」。你應該能夠驗證它是否正確 - 不需要猜測。如果不正確,請給出一組樣本數據,以顯示您想要達到的結果。 – ADyson

+0

你是什麼意思「避免」你想讓你的查詢返回任何這樣的實例嗎?你是否試圖設置一個可以防止這種情況發生的約束? – xQbert

回答

0

這是你需要:

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 
);