我是 SQL 和数据库设计的新手,并试图解决以下问题。
我有一个名为猫的表,PKs (cat_id) 是 C1、C2、C3 等和另一个带有猫名的属性(加上多个其他属性)。
我有一个名为 dogs 的表,PKs (dog_id) 是 D1、D2、D3 等,另一个带有狗名的属性(加上多个其他属性)。
然后我有一个名为动物的表,PK 1、2、3、4、5、6 等,其属性为 Cat_Dog_ID(C1、C2、C3、D1、D2、D3 等)。
然后我想做的是一个选择语句,它将带回猫和狗的名字,例如。
An_Id - Cat_Dog_ID - 名称 1 - C1 - 亨利 2 - C2 - 晶须 3 - C3 - 灰色 4 - D1 - 参差不齐 5 - D2 - 汪 6 - D3 - 最大
分开做很容易:
SELECT a.an_id, a.cat_dog_id, c.cat_name
FROM animal a, cat c
WHERE a.cat_dog_id = c.cat_id;
SELECT a.an_id, a.cat_dog_id, d.dog_name
FROM animal a, dog d
WHERE a.cat_dog_id = d.dog_id;
我已经尝试了很多方法将它们组合在一起,并且很确定我需要使用子查询/嵌套查询,例如如下所示,但到目前为止还没有任何工作。
SELECT a.an_id, a.cat_dog_id, c.cat_name "Name"
FROM animal a, cat c
WHERE a.cat_dog_id = c.cat_id
AND (SELECT a.an_id, a.cat_dog_id, d.dog_name "Name"
FROM animal a, dog d
WHERE a.cat_dog_id = d.dog_id);
SELECT a.an_id, a.cat_dog_id FROM animal a
where a.cat_dog_id = c.cat_id in (select c.cat_name "Name" from cat c)
WHERE a.cat_dog_id = d.dog_id in (select d.dog_name "Name" from dog d);
任何建议如何做到这一点?