mysql - SQL INNER JOIN 只返回第一个结果
问题描述
我在 Pets 和 Users 之间有一个多对多关系,带有一个 UserPets 连接表。我一直在尝试编写一个 SQL 查询,该查询将返回用户名和步行的次数。但是,我只能返回一个用户和一个 timesWalked,它们甚至不是关联的。
我当前的 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 相关联
我怎样才能返回所有的 timeWalked 以及所有遛宠物的用户名?
解决方案
您可以使用内部连接来实现这一点。下面的查询列出了走过所有宠物总时间的所有用户。即,用户 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
推荐阅读
- java - 删除 AlertDialog 中项目顶部和底部的空格
- javascript - 编写异步函数的具体困惑。任何人都可以验证吗?
- java - Groovy 使用 RegEx 拆分获取其他 2 个字符串之间的字符串
- javascript - 无法将 php 密码字段上传到 phpmyAdmin
- vba - For循环与另一个范围内的单元格范围
- android - 如何在 Android 中访问 google fit 用户的电子邮件
- react-native - 如何禁用反应导航的堆栈导航器转换?
- chef-infra - 如何在厨师食谱中运行一批 sql 文件
- ruby-on-rails - rails嵌套资源没有路由匹配缺少必需的键[:id]
- android - Firebase 操作似乎正在自行清除我的 EditText