我需要查询方面的帮助。您将获得以下表格:玩家(玩家ID(主键),玩家名)和村庄(村庄ID,villageName,x,y,人口,玩家ID(外键),并检查y中的x是否在-400到400之间。
任务是编写一个查询,输出为球员姓名,他们的所有村庄的x都在100到200之间,y的村庄在0到100之间。
目前,我有此查询,但它并不查找所有村庄。
SELECT i.playerName
FROM player i JOIN
village n
USING(playerID)
WHERE (n.x BETWEEN 100 AND 200) AND (n.y BETWEEN 0 AND 100);
最佳答案
如果要所有村庄,则需要比较所有行。这表明聚合:
SELECT i.playerName
FROM igralec i JOIN
naselje n
USING (playerID)
GROUP BY i.playerName
HAVING SUM( (n.x BETWEEN 100 AND 200) AND (n.y BETWEEN 0 AND 100) ) = COUNT(*);
HAVING
子句保证所有行(即城市)都满足给定玩家的条件。关于mysql - MySQL查询:按坐标输出所有玩家村庄,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50587547/