[英]SQL - Exclude rows based on field value in another table
I am having difficulty with excluding entire rows in my inner joined table based on a field value in another table. 我很难根据另一个表中的字段值排除内部联接表中的整个行。 Here's what I mean:
这就是我的意思:
Distinct IDs (TableA Inner Join TableB) 不同的ID(TableA内联接TableB)
ID | Date | Bldg_Nbr
----------+--------------+------------------
1 | 10/20/2014 | 92
2 | 10/20/2014 | 92
3 | 10/20/2014 | 92
4 | 10/20/2014 | 92
5 | 10/20/2014 | 92
Code Table (TableC) 代码表(TableC)
ID | Date | Code | Bldg_Nbr
----------+--------------+------------+----------------
1 | 10/20/2014 | 11 | 92
1 | 10/20/2014 | 02 | 45
3 | 10/20/2014 | 15 | 85
3 | 10/20/2014 | 95 | 66
4 | 10/21/2014 | 11 | 92
What I want to do is exclude the ID rows in the Inner Joined table that have a code 11 with the same date and bldg number listed in the Code Table (TableC). 我想做的是排除“内部联接”表中的ID行,这些ID行的代码11与代码表(TableC)中列出的日期和bldg号相同。 Note that the Code Table (TableC) can have an ID with many different codes with the same date and/or bldg.
请注意,代码表(TableC)的ID可以包含具有相同日期和/或日期的许多不同代码。 In this example I would want ID 1 excluded, but not ID 4 since it has a different date.
在此示例中,我希望排除ID 1,但不包括ID 4,因为它具有不同的日期。
Here's the code for the first table (TableA Inner Join TableB) which works; 这是起作用的第一个表(TableA内连接TableB)的代码; I just need to incorporate the TableC constraints:
我只需要合并TableC约束:
SELECT DISTINCT
I.DATE,
I.BLDG_NBR,
I.ID
FROM TableA I
INNER JOIN TableB D ON I.ID = D.ID
WHERE I.DATE = '20-OCT-2014' AND I.BLDG_NBR = 92
This will exclude code 11 rows in the Inner table that have the bldg_nbr and date in the code table: 这将排除内部表中的代码11行,这些行在代码表中具有bldg_nbr和日期:
SELECT DISTINCT
I.DATE,
I.BLDG_NBR,
I.ID
FROM TableA I INNER JOIN TableB D
ON I.ID = D.ID
AND I.Bldg_Nbr = D.Bldg_Nbr
AND I.Date = D.Date
AND D.Code != 11
WHERE I.DATE = '20-OCT-2014'
AND I.BLDG_NBR = 92
SELECT DISTINCT I.DATE, I.BLDG_NBR, I.ID
FROM TableA I
INNER JOIN TableB D ON I.ID = D.ID
WHERE I.DATE = TO_DATE('20-10-2014', 'DD-MM-YYYY') AND I.BLDG_NBR = 92
AND NOT EXISTS (SELECT 1 FROM TableC C WHERE C.ID = I.ID AND I.DATE = C.DATE AND I.BLDG_NBR = C.BLDG_NBR AND C.CODE = 11)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.