如何从SQL中的第三个表中获取信息



我需要一个无法直接获取的表中的信息。所以在一个表中,我把人们的名字放在类别的第二个名字中,第三个是中间的一个(在他们之间(,因为关系很多。现在我需要信息,例如,哪些人属于"A"类。我试过这样做,但不起作用。

select 
p.name,p.surname  
from people p, category c, category_people cp 
where 
p.ID=cp.fk_ID_people and c.name='a';

从中我得到了所有人的名单,这是不正确的。请帮忙。我还认为我的逻辑不正确。非常感谢。

您需要一个额外的条件,因为category_people似乎是使多对多连接成为可能的表。

因此,该表可能有一个fk_ID_people和一个fk_ID_category字段,您需要将查询更新为:

select 
p.name,p.surname  
from people p, category c, category_people cp 
where 
p.ID=cp.fk_ID_people 
and c.ID = cp.fk_ID_category
and c.name='a';

对于最佳实践,您应该始终使用join条件,而不是使用where条件。

select 
p.name,
p.surname  
from people p
join category_people cp
on p.ID = cp.fk_ID_people 
join category c
on c.ID = cp.fk_ID_category
where 
c.name='a';