如果它们出现在另一个查询中,则不显示查询结果

时间:2019-04-10 13:42:50

标签: sql

在我的应用程序中,每个经理都有一个工作模式(例如星期一至星期五)。但是我还有一个表“ pattern_changes”,如果无法在工作中使用它们,则可以在其中插入数据。

在第一个查询中,我可以根据分配给他们的模式来显示今天有空的人:

SELECT distinct gu.first_name || ' ' || gu.last_name
FROM patterns pa JOIN fmanager_pattern fp
ON pa.id = fp.pattern_id
JOIN fmanagers fm 
ON fm.id = fp.fmanager_id
JOIN gen_users gu
ON gu.user_id = fm.user_id
WHERE (TO_CHAR(pa.start_dt, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') LIKE TO_CHAR(sysdate, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') AND pa.start_dt < sysdate and pa.end_dt > sysdate) 
OR (TO_CHAR(pa.end_dt, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') LIKE TO_CHAR(sysdate, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') AND pa.start_dt < sysdate and pa.end_dt > sysdate)
OR TO_CHAR(sysdate, 'D') BETWEEN TO_CHAR(pa.start_dt, 'D') AND TO_CHAR(pa.end_dt, 'D') AND pa.start_dt < sysdate and pa.end_dt > sysdate
OR TO_CHAR(sysdate, 'D')+7 BETWEEN TO_CHAR(pa.start_dt, 'D') AND TO_CHAR(pa.start_dt, 'D')+7 AND pa.start_dt < sysdate and pa.end_dt > sysdate

在第二个查询中,根据pattern_changes表,我可以显示谁今天没有空。

SELECT fm.id, gu.first_name || ' ' || gu.last_name
FROM fmanagers fm JOIN pattern_changes pc 
ON pc.fmanagers_id = fm.id
JOIN gen_users gu 
ON gu.user_id = fm.user_id
WHERE pc.change_dt < sysdate and pc.end_dt > sysdate
OR pc.change_dt = to_char(sysdate)
OR pc.end_dt = to_char(sysdate))

例如,第一个查询返回:ADAM和EVA
第二个查询返回ADAM

所以我只想看到EVA。

我尝试使用NOT IN或NOT EXISTS来执行此操作,但是它们都不起作用。 有人可以帮忙吗?

提前谢谢

0 个答案:

没有答案
相关问题