我需要一个无法直接获取的表中的信息。所以在一个表中,我把人们的名字放在类别的第二个名字中,第三个是中间的一个(在他们之间(,因为关系很多。现在我需要信息,例如,哪些人属于"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';