2014-02-12 32 views
0

假设我有一个名为person的对象,它具有(id,name,address,phone_number)作为它的属性和一个名为dog的对象(ID,year_of_birth,breed)。然后我有两个名为owner的对象之间的关系。所有者具有以下属性:(owner_id,dog_id)。在SQL中没有类似属性的两个表之间选择语句?

在E-R图中,所有者将是一个连接狗和人的三角形,它们都是矩形的。我正在给这个信息,以便你了解这种关系。我的目标是列出谁是业主不是来自西班牙的狗ID。

我已经试过以下等数十种不同的组合是这样的:

select id from owner where address <> '% Spain%'; 

似乎没有任何工作。我一直坚持这个好几个小时。

+0

由于“所有者”允许狗与人之间的多对多关系,您想如何处理情况在一个特定的狗*的一个或多个业主在西班牙,并且同一只狗的一个或多个业主不在西班牙?另外,'person'没有某种形式的'ID',其值被'owner'中的'owner_id'引用? –

+0

(还有一个跟进 - 这似乎是一个坏主意,有'is_only_owner' - 不能推断,只有在'拥有'一个特定的'pet_id'行吗?这意味着如果有多行对于一个特定的'pet_id'和一些或全部有'is_only_owner'设置? –

+0

我的不好,我已经添加了“身份证”的人我只关心每个人,如果他的位置在西班牙 – kiasy

回答

0

这将给dog_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%'; 
+0

它给了我下面的错误在“在哪里”(在'w'下面):“错误在第1行:ORA-00920:无效的关系运算符任何想法如何解决这个问题? – kiasy