SQL 数据库没有得到我想要的好结果
SQL Databases not getting the good result that i want
对于这个问题,我需要写一个查询,returns所有和女球员一起踢球的男球员的名字。消除结果中的重复项。
select distinct name
FROM Persons, SportTogether S
WHERE Persons.gender = "male"
AND (Persons.id = S.personA_id AND sport ="soccer"
AND S.personB_id IN(SELECT id FROM Persons WHERE gender ="female"))
OR
(Persons.id = S.personB_id AND sport ="soccer" AND S.personA_id IN
(SELECT id FROM Persons WHERE gender ="female"))
我现在得到三个名字。其中有 2 个是男人而且很好,但我也得到了第三个名字,这是一个女人的名字,这是一个假的。试了很多,都不知道哪里出错了。
数据库是:
人(身份证、姓名、地址、年龄、眼睛颜色、性别)
SportTogether (id, sport, personA_id, personB_id)
如果我对SQL的理解是正确的,应该有“()”来使Persons.gender = “male”与后面的“OR”一起工作。
你能试试吗:
select distinct name
FROM Persons, SportTogether S
WHERE Persons.gender = "male"
AND
((Persons.id = S.personA_id AND sport ="soccer"
AND S.personB_id IN(SELECT id FROM Persons WHERE gender ="female"))
OR
(Persons.id = S.personB_id AND sport ="soccer" AND S.personA_id IN
(SELECT id FROM Persons WHERE gender ="female")))
点赞table人两次
SELECT DISTINCT P1.name
FROM Persons P1 JOIN SportTogether S ON P1.id = S.personA_id
JOIN Persons P2 ON p2.id = S.personB_id
WHERE P1.gender = 'male' AND P2.gender = 'female' AND sport ='soccer'
对于这个问题,我需要写一个查询,returns所有和女球员一起踢球的男球员的名字。消除结果中的重复项。
select distinct name
FROM Persons, SportTogether S
WHERE Persons.gender = "male"
AND (Persons.id = S.personA_id AND sport ="soccer"
AND S.personB_id IN(SELECT id FROM Persons WHERE gender ="female"))
OR
(Persons.id = S.personB_id AND sport ="soccer" AND S.personA_id IN
(SELECT id FROM Persons WHERE gender ="female"))
我现在得到三个名字。其中有 2 个是男人而且很好,但我也得到了第三个名字,这是一个女人的名字,这是一个假的。试了很多,都不知道哪里出错了。 数据库是:
人(身份证、姓名、地址、年龄、眼睛颜色、性别)
SportTogether (id, sport, personA_id, personB_id)
如果我对SQL的理解是正确的,应该有“()”来使Persons.gender = “male”与后面的“OR”一起工作。 你能试试吗:
select distinct name
FROM Persons, SportTogether S
WHERE Persons.gender = "male"
AND
((Persons.id = S.personA_id AND sport ="soccer"
AND S.personB_id IN(SELECT id FROM Persons WHERE gender ="female"))
OR
(Persons.id = S.personB_id AND sport ="soccer" AND S.personA_id IN
(SELECT id FROM Persons WHERE gender ="female")))
点赞table人两次
SELECT DISTINCT P1.name
FROM Persons P1 JOIN SportTogether S ON P1.id = S.personA_id
JOIN Persons P2 ON p2.id = S.personB_id
WHERE P1.gender = 'male' AND P2.gender = 'female' AND sport ='soccer'