Проблемы с HAVING-запросом

Я следую онлайн-курс по базам данных. Однако я не знаю, как поступить с этим вопросом. Кто-нибудь может помочь? Это мой код:

SELECT distinct name
FROM Persons P, Knows K
WHERE K.personA_id = P.id AND K.personB_id = P.id
GROUP BY name
HAVING SUM(K.id) = 2

3 ответа

Решение
SELECT distinct p.name
FROM Knows K
LEFT JOIN Persons P,
ON K.personA_id = P.id 
WHERE K.personB_id 
  IN (
    SELECT id
    FROM Persons
    WHERE age>60
  )
GROUP BY name
HAVING COUNT(K.personB_id) = 2
SELECT P.name
FROM Persons P
WHERE  (  SELECT COUNT(*)
          FROM Knows K JOIN Persons P2 ON K.personB_id = P2.id
          WHERE K.personA_id = P.id
          AND P2.age >= 60
      ) = 2

но если вы хотите знать, как использовать

SELECT P.name
FROM Persons P JOIN Knows K ON K.personA_id = P.id 
JOIN Persons P2 ON P2.id = K.personB_id
WHERE P2.age >= 60
GROUP BY P.id
HAVING COUNT(*)=2

Обратите внимание, этот запрос будет работать ТОЛЬКО с MySql

Человек А и Человек В всегда будут разными в таблице Ноу, верно? Если это так, то вы не должны присоединяться к обоим условиям.

Я предлагаю вам удалить "AND K.personB_id = P.id"

Другие вопросы по тегам