在SQL中没有相似属性的两个表之间选择语句?

在SQL中没有相似属性的两个表之间选择语句?,sql,database,oracle-sqldeveloper,sqlplus,Sql,Database,Oracle Sqldeveloper,Sqlplus,假设我有一个名为person的对象,其属性为id、姓名、地址、电话号码,还有一个名为dog的对象,其id、出生年份、品种。然后我有一个名为owner的两个对象之间的关系。所有者具有以下属性:所有者id、狗id 在E-R图上,主人将是一个三角形,连接狗和人,两者都是矩形的。我提供这些信息只是为了让你了解这段关系。我的目标是列出狗的ID,谁的主人不是来自西班牙 我已经尝试过以下和几十种不同的组合,如: select id from owner where address <> '% S

假设我有一个名为person的对象,其属性为id、姓名、地址、电话号码,还有一个名为dog的对象,其id、出生年份、品种。然后我有一个名为owner的两个对象之间的关系。所有者具有以下属性:所有者id、狗id

在E-R图上,主人将是一个三角形,连接狗和人,两者都是矩形的。我提供这些信息只是为了让你了解这段关系。我的目标是列出狗的ID,谁的主人不是来自西班牙

我已经尝试过以下和几十种不同的组合,如:

 select id from owner where address <> '% Spain%';
似乎什么都不管用。我已经在这上面呆了好几个小时了。

在使用通配符比较时,需要使用LIKE

select id
from owner
where address NOT LIKE '% Spain%'
有关详细信息,请参阅手册:

这将为至少有一位不在西班牙的主人的所有狗提供狗的ID:

select distinct o.dog_id
from owner o
   inner join
     person p
      on o.owner_id = p.id
where not p.address like '% Spain%';

既然主人允许狗和人之间有多对多的关系,你想如何处理一只狗的一个或多个主人在西班牙,而同一只狗的一个或多个主人不在西班牙的情况?此外,该人是否没有某种形式的ID,其值由“所有者”中的“所有者ID”引用?再跟进一次——拥有“仅是所有者”似乎不是一个好主意——难道不能通过“所有者”中只有一行具有特定宠物ID来推断吗?如果一个特定的宠物id有多行,并且其中一些或全部都设置了“仅限主人”,这意味着什么?我的错,我已经将id添加到了个人。我只关心每个人,如果他的位置在西班牙。嘿,忘了他是唯一的所有者吧。我从问题中删除了它。它在“w”下面的no处给出了以下错误:第1行的错误:ORA-00920:无效的关系运算符。有没有办法解决这个问题?我一直在用no-like-acually代替。不过,我可以想出如何解决我的问题: