我有3张桌子:
BATCH
facName lotName
LOT
lotName facID
FAC
ID facName
LOT 表包含批次,每个批次与fac相关,ID(LOT.facID=FAC.ID
)。
BATCH 表包含facName和lotName对。这些对不一定正确,意味着它可以包含彼此不相关的facName
和lotName
(通过 LOT 表)。我想要得到错误的记录。
例如,对于此数据:
BATCH
facName lotName
fac1 lot1
fac1 lot2
LOT
lotName facID
lot1 1
lot2 2
FAC
ID facName
1 fac1
2 fac2
我想要
BATCH
facName lotName
fac1 lot2
有什么想法吗?
答案 0 :(得分:1)
您只需要一个JOIN
select facName, lotName
from batch b
join fac f on b.facName = f.facName
join lot l on b.lotName = l.lotName
where f.id != l.id
答案 1 :(得分:0)
在Oracle中我会做这样的事情: 我想你也可以在MySQL上做到这一点:
select *
from batch
where not exists ( select 1 from LOT
join FAC on FAC.id = LOT.facid
where FAC.facname = BATCH.facname
and LOT.lotname = BATCH.lotname)