我有三个表
表1.) Sale
表2.) ItemsSale
表3.) Items
表1和表2共有ID,表2和表3共有ITEMS。
我尝试了一个查询语句,但似乎无法正确获取结果,有些困扰。
我的目标是选择所有只有一行数据并符合特定条件的行,以下是我的查询语句:
select *
from sales i
inner join itemssales j on i.id = j.id
inner join item u on j.item = u.item
where u.code = ANY ('TEST','HI') and
i.created_date between TO_DATE('1/4/2016 12:00:00 AM','MM/DD/YYYY HH:MI:SS AM') and
TO_DATE('1/4/2016 11:59:59 PM','MM/DD/YYYY HH:MI:SS PM')
group by i.id
having count(i.id) = 1
在ItemSale表中有两个条目,但在销售表中只有一个。这很好……但我需要构建一个查询,只返回给我一个记录。
我认为问题出在“ANY”部分,查询只返回一行,而这一行是不符合“ANY('TEST','HI')”条件的记录。但实际上,该特定ID的记录在ItemSales中有两个记录。
我需要只返回那些真正只有一个记录的记录。
感谢您的任何帮助。
--EDIT:
COL1 | ID
-----|-----
2 | 26
3 | 85
1 | 23
1 | 88
1 | 6
1 | 85
我还会将它们分组,并确保计数等于1,但是你可以看到,ID 85在这里作为一条记录出现,这是一个“假阳性”,因为itemsales表中实际上有两条记录。
我甚至尝试在选择后更改查询为
j.id
,因为j
是具有两个记录的表,但没有用。--- EDIT
Sale table contains:
ID
---
85
Itemsales table contains:
ID | Position | item_id
---|----------|---------
85 | 1 | 6
85 | 2 | 7
Items table contains:
item_id | code
--------|------
7 | HI
6 | BOOP
它正在返回的记录是代码为“BOOP”的记录。
谢谢。
ANY
,HI
)的记录? - Tim Biegeleisen