我有两张桌子:
产品
TDItems
这两个表在我的数据库中通过FK约束无关。
这些表包含根据我想加入/联合它们共享相同信息的项目:UPC和EAN列
我尝试过这样的简单查询:
select *
from Items as It join TDItems as tdi
on it.UPC=tdi.UPC and it.EAN=tdi.EAN
此查询返回"某些"结果,但是当我做了两个这样的查询的联合时:
select *
from Items as It join TDItems as tdi
on it.UPC=tdi.UPC
UNION -- important part I guess?
select *
from Items as It join TDItems as tdi
on it.EAN=tdi.EAN
第一个查询返回504个结果,第二个查询返回709个结果...
所以我的问题是:
有人可以帮助我为这些问题撰写正确的查询吗?
编辑:
嘿@Gordon我重写了内连接
select *
from Items as It join TDItems as tdi
on it.UPC=tdi.UPC OR it.EAN=tdi.EAN
这是解决方案,让项目在UPC或EAN上匹配(即不必是匹配的UPC和EAN对)
答案 0 :(得分:2)
UNION
更像是OR
查询更像是UNION
select *
from Items as It
join TDItems as tdi
on it.UPC = tdi.UPC
or it.EAN = tdi.EAN
答案 1 :(得分:1)
这是对问题的原始版本的回答。
我认为查询没有理由返回相同数量的行。这只取决于数据。例如,如果两个表之间没有UPC
/ EAN
对,则第一个查询可以不返回任何行,但这两个表确实有共同UPC
和{{1} }值独立。
至于你的第二个问题,你似乎想要EAN
而不是select count(*)
。