Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle特定选择_Sql_Oracle - Fatal编程技术网

Sql Oracle特定选择

Sql Oracle特定选择,sql,oracle,Sql,Oracle,我有一张桌子如下 OWNERID PET_QUANTITY PET_TYPE 宠物类型为狗、猫或鸟 每个主人/宠物都有一个记录,因此如果有一只狗和一只鸟,则会有两个记录,两个记录中的宠物数量都是2 我想要所有主人的身份证,其中一个人有两只宠物,宠物是一只狗和一只猫 首先,数据模型非常不幸,因为特定行的PET_QUANTITY值取决于其他行中的数据。这违反了基本的规范化规则。这反过来又会造成一种情况,即不可避免地失去同步,因此必须确定PET_数量规则还是表中的行数规则。一个适当规范化的数据模

我有一张桌子如下

OWNERID 
PET_QUANTITY 
PET_TYPE
宠物类型为狗、猫或鸟

每个主人/宠物都有一个记录,因此如果有一只狗和一只鸟,则会有两个记录,两个记录中的宠物数量都是2


我想要所有主人的身份证,其中一个人有两只宠物,宠物是一只狗和一只猫

首先,数据模型非常不幸,因为特定行的
PET_QUANTITY
值取决于其他行中的数据。这违反了基本的规范化规则。这反过来又会造成一种情况,即不可避免地失去同步,因此必须确定
PET_数量
规则还是表中的行数规则。一个适当规范化的数据模型会更好地为您服务

假设存在差异时,
PET\u数量
规则,一个选项是使用
INTERSECT

SELECT owner_id
  FROM your_table
 WHERE pet_quantity = 2
   AND pet_type = 'CAT'
INTERSECT
SELECT owner_id
  FROM your_table
 WHERE pet_quantity = 2
   AND pet_type = 'DOG'
另一种可能是做类似的事情

SELECT owner_id, COUNT(DISTINCT pet_type)
  FROM your_table
 WHERE pet_quantity = 2
   AND pet_type IN ('DOG', 'CAT')
 GROUP BY owner_id
HAVING COUNT(DISTINCT pet_type) = 2

首先,数据模型非常不幸,因为特定行的
PET_QUANTITY
值取决于其他行中的数据。这违反了基本的规范化规则。这反过来又会造成一种情况,即不可避免地失去同步,因此必须确定
PET_数量
规则还是表中的行数规则。一个适当规范化的数据模型会更好地为您服务

假设存在差异时,
PET\u数量
规则,一个选项是使用
INTERSECT

SELECT owner_id
  FROM your_table
 WHERE pet_quantity = 2
   AND pet_type = 'CAT'
INTERSECT
SELECT owner_id
  FROM your_table
 WHERE pet_quantity = 2
   AND pet_type = 'DOG'
另一种可能是做类似的事情

SELECT owner_id, COUNT(DISTINCT pet_type)
  FROM your_table
 WHERE pet_quantity = 2
   AND pet_type IN ('DOG', 'CAT')
 GROUP BY owner_id
HAVING COUNT(DISTINCT pet_type) = 2

我希望这是一个愚蠢的学校问题(或类似问题),否则数据模型真的很糟糕。我希望这是一个愚蠢的学校问题(或类似问题),否则数据模型真的很糟糕。