Какой подзапрос я могу использовать для фильтрации данных в зависимости от строк? - PullRequest
0 голосов
/ 20 февраля 2020

Я создал следующие таблицы:

create table Person (

    id_person int,
    name varchar(255),
    primary key (id_person)
);

create table Picture (

    id_picture int,
    id_person int,
    country varchar(255),    //Shows in what country the picture has been taken
    primary key(id_picture),
    foreign key (id_person) references Person (id_person)
);

Я хочу выполнить предложение SELECT, которое отфильтровывает людей, которые только что сделали снимки на UK и в SPAIN. Не в других странах.

Например:

Таблица персонажа

   id       name
-------------------
   1        Andrew
   2        Javi
   3        Kevin

Изображение таблицы

   id_picture      id_person      country
------------------------------------------------
      1               1           BELGIUM
      2               3           USA
      3               1           UK
      4               2           UK
      5               3           NORWAY
      6               2           SPAIN
      7               1           USA
      8               2           UK
      9               3           DENMARK

Как показывают таблицы, только Person с id_person = 2 сделал снимки только в UK и SPAIN.

Как я могу показать Persons, который сделал снимки только на UK И (не ИЛИ) SPAIN?

Следуя приведенному выше примеру, вывод, который я хотел бы получить будет:

    id_person      name
-------------------------------
      2            Javi

1 Ответ

2 голосов
/ 20 февраля 2020

попробуйте, как показано ниже, используя отличный счетчик ()

select id_person,name from person p join picture p1 on p.id=p1.id_person
 where country in ('uk','spain')
 group by id_person,name
having count(distinct country)=2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...