查询JOIN表

时间:2015-03-03 14:35:29

标签: mysql

我正在为数据库课程练习,但我无法完成最后一次练习。

问题是:写一个查询,返回所有喜欢至少两个绿眼睛的人的名字。消除查询结果中的重复项。

给出了两个表,即: 人员{ id ,姓名,地址,年龄,eyeColor,性别}

喜欢{ id ,personA_id→人物,personB_id→人物}

我写的代码是:

SELECT distinct P1.name, COUNT(P2.id)
FROM Persons P1
INNER JOIN Likes L
    On P1.id = L.PersonA_id
INNER JOIN Persons P2
    ON P2.id = L.PersonB_id
WHERE P2.eyeColor = "green" 
AND COUNT(P2.id) >= 2
GROUP BY name

我需要做些什么才能让它发挥作用?

提前致谢,

1 个答案:

答案 0 :(得分:0)

SELECT和GROUP BY子句应使用相同的列 - P1.name。 “ COUNT(P2.is)> = 2 ”应该在不在WHERE中的HAVING子句中使用

SELECT
  P1.name,
  COUNT(P2.id)
FROM
  Persons P1
  INNER JOIN Likes L On P1.id = L.PersonA_id
  INNER JOIN Persons P2 ON P2.id = L.PersonB_id
WHERE
  P2.eyeColor = "green" 
GROUP BY
  P1.name
HAVING
  COUNT(P2.id) >= 2