SQL查询:获取全部<;ParentTableRecord>;s与a不匹配<;儿童>;具有属性值=<;价值>;
假设我有一个表,[所有者],只有一个“名称”。然后我有一张桌子[狗],上面有一个“名字”,“颜色”和一个“主人名” 样本数据:SQL查询:获取全部<;ParentTableRecord>;s与a不匹配<;儿童>;具有属性值=<;价值>;,sql,Sql,假设我有一个表,[所有者],只有一个“名称”。然后我有一张桌子[狗],上面有一个“名字”,“颜色”和一个“主人名” 样本数据: Owner: <Name: Joe>, <Name: Sue> Dog: <Name: Rover, LeashColor: Red, OwnerName: Joe>, <Name: Pup, LeashColor: Green, OwnerName: Joe>, <Name: Spot, Lea
Owner: <Name: Joe>, <Name: Sue>
Dog: <Name: Rover, LeashColor: Red, OwnerName: Joe>,
<Name: Pup, LeashColor: Green, OwnerName: Joe>,
<Name: Spot, LeashColor: Purple, OwnerName: Sue>,
<Name: Lassie, LeashColor: Yellow, OwnerName: Sue>
所有者:,
狗:,
,
,
我想要一个SQL查询,它可以获取所有没有狗名的所有者。例如,当输入=“Rover”时,查询将返回Sue,因为她没有名为Rover的狗,但Joe有
如果可能的话,最好有一个查询,让所有的主人都没有狗的名字,但是如果他们有狗的名字,如果狗的皮带颜色是
因此,通过输入=“漫游者”和=“红色”,Joe和Sue都将返回(Sue没有漫游者,Joe有一个带红色皮带的漫游者)。但是,如果输入为“漫游者”、“绿色”,则只返回Sue(Sue没有漫游者,Joe有漫游者,颜色不是绿色)
我对这件事困惑了一段时间。如果有任何提示,我将不胜感激。使用
NOT IN
查找不在给定子查询中的记录:
SELECT *
FROM Owner
WHERE Name NOT IN
(SELECT Name from Dog
WHERE Name = @dogName)
可以对第二个结果使用左连接:
SELECT o.*
FROM Owner o
LEFT JOIN Dog d
ON o.Name = d.OwnerName
AND d.Name = @dogName
WHERE d.Name IS NULL // no dog by that name
OR d.LeashColor = @leashColor // dog by than name with the right color leash