Как я могу получить информацию из третьей таблицы в SQL - PullRequest
0 голосов
/ 11 апреля 2020

Мне нужна информация из таблицы, которую я не могу получить напрямую. Итак, в одной таблице у меня есть имена людей во вторых именах категорий, а третья - это средняя (которая между ними), потому что отношение много-много. Теперь мне нужна информация, какие люди находятся в категории «А», например. Я пробовал вот так, но это не работает.

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

Из этого я получаю список всех людей, что неверно. Пожалуйста помоги. Я также думаю, что мой лог c не работает правильно. Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Для получения лучших практик вы всегда должны 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';
0 голосов
/ 11 апреля 2020

Вам нужно дополнительное условие, поскольку кажется, что 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';
...