запрос для поиска людей, которым нравится как минимум 2 - PullRequest
0 голосов
/ 26 апреля 2019

Сначала меня попросили найти людей, которым нравится человек с голубыми глазами, что было легко, затем меня попросили найти людей, которым нравятся как минимум 2 человека с зелеными глазами, когда я расширил свой первый запрос для решения второй задачи,мой запрос ничего не дал.

запрос был выполнен на 2 таблицах (Persons and Likes) Persons содержит Persons, personB_id ==> Persons)

Был бы признателен, если кто-нибудь может помочь мне написатьвторой запрос :)

ниже вы можете найти запрос, который я написал для первой задачи и второй задачи соответственно.

Task1:

SELECT distinct p1.name
FROM Persons as p1,Persons as p2, Likes as l 
where p1.id =l.personA_id
And p2.id = l.personB_id
And p2.eyeColor= "blue"

Task2:

SELECT distinct p1.name
FROM Persons as p1,Persons as p2, Likes as l, Persons as p3
where p1.id =l.personA_id
And p2.id = l.personB_id
And p3.id = l.personB_id
And p2.id = l.personB_id <> p3.id = l.personB_id
And p2.eyeColor= "green"
And p3.eyeColor= "green"

1 Ответ

0 голосов
/ 26 апреля 2019

Я имею в виду «группа по»:

SELECT pa.name
FROM Likes l JOIN
     Persons pa
     ON pa.id = l.personA_id JOIN
     Persons pb
     ON pb.id = l.personB_id
WHERE pb.eyeColor = 'green'
GROUP BY pa.name, pa.id
HAVING COUNT(*) >= 2;

Примечания:

  • Никогда не используйте запятые в предложении FROM.Это 21-й век, и этот синтаксис устарел уже более двух десятилетий.
  • Всегда используйте правильный, явный, стандартный JOIN синтаксис.
  • GROUP BY включает идентификатор человека, на случай, если два человека имеют одинаковые имена.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...