使用Microsoft Access,我通常使用条件(主要是where
)来获取我想要显示的数据。
到目前为止,进展顺利。但是现在我有一个复杂的过滤,我不确定最好的方法。我将解释我是如何通过许多查询来做到的,并且我想知道是否有更简单的事情,因为我觉得它为我所完成的事情做了太多。
我有Building
和Energy
个表格。在它们之间,我有一个链接表,因为Building
有一个可能的能量列表。
我的目标是显示尚未与建筑物相关的所有能量。
我首先有一个简单的查询来显示链接表中所有能源ID,其中建筑物是感兴趣的。
一旦我这样做,我就会使用另一个查询,如果它是前一个列表中缺少的能量,则显示能量。
这需要2个查询,我觉得我可以有更好的方法来做到这一点。我对MS Access相当新,所以欢迎任何建议。
这是第一个获得能量列表的请求:
SELECT
Batiments.ID, Energies.ID, Energies.Type
FROM
Energies
INNER JOIN
(Batiments
INNER JOIN
Batiment_Energie ON Batiments.ID = Batiment_Energie.Batiment_ID) ON Energies.ID = Batiment_Energie.Energie_ID
WHERE
(((Batiments.ID) = " & cbxBatiments.Column(0) & "));"
答案 0 :(得分:1)
您可以使用
查询非关联能源类型SELECT
ID, Type
FROM
Energies
WHERE
ID NOT IN (SELECT Energie_ID
FROM Batiment_Energie
WHERE Batiment_ID = 123)
其中123
将替换为来自cbxBatiments.Column(0)
的ID。
答案 1 :(得分:0)
您可以使用not exists
:
select e.*
from energie as e
where not exists (select 1
from Batiment_Energie as be
where be.energie_id = e.id and be.batiment_id = <your id>
);