我在宠物和用户之间有多对多的关系,并且有一个UserPets联接表。我一直在尝试编写一个SQL查询,该查询将返回用户名,其次数是走路的。但是,我只能返回一个用户和一个时间的人,他们甚至不是相关的。
我当前的SQL语句是:
SELECT user_pets.timesWalked, users.name
FROM user_pets
INNER JOIN users ON user_pets.user_id = users.id
返回的结果是:
[{"timesWalked"=>20, "name"=>"user1", 0=>20, 1=>"user1"}]
在这种情况下,user1不是那个遛狗20次的人,这是我需要的关联。
table name: users
name
user1
user2
user3
table name: user_pets
name timesWalked userId petId
usep1 10 2 1
usep2 20 1 3
usep3 5 1 2
table name: pets
name
pet1
pet2
pet3
我的预期结果是:
[{"timesWalked"=>20, "name"=>"user1"}]
[{"timesWalked"=>10, "name"=>"user3"}]
[{"timesWalked"=>5, "name"=>"user2"}]
在这种情况下,用户表中的用户名与user_pets表中的timesWalked相关联
如何与所有走过宠物的用户名一起回来?
答案 0 :(得分:2)
您可以使用内部联接来实现此目的。 下面的查询列出了所有宠物已经走完总时间的所有用户。 即用户1已经走了两只宠物,每次2只。
select
up.timesWalked, u.name as UserName, p.name as PetName
from user_pets up
inner join users u on up.user_id = u.id
inner join pets p on up.pet_id = p.id