Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL内部联接只返回第一个结果_Mysql - Fatal编程技术网

Mysql SQL内部联接只返回第一个结果

Mysql SQL内部联接只返回第一个结果,mysql,Mysql,我在Pets和用户之间有一个多对多关系,有一个UserPets连接表。我一直在尝试编写一个SQL查询,返回用户名和行走次数。然而,我只能返回一个用户和一个timesweek,它们甚至不是关联的 我当前拥有的SQL语句是: SELECT user_pets.timesWalked, users.name FROM user_pets INNER JOIN users ON user_pets.user_id = users.id 返回的结果是: [{"timesWalked"=>2

我在Pets和用户之间有一个多对多关系,有一个UserPets连接表。我一直在尝试编写一个SQL查询,返回用户名和行走次数。然而,我只能返回一个用户和一个timesweek,它们甚至不是关联的

我当前拥有的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"}]
[{"timesWalked"=>20, "name"=>"user1"}]
[{"timesWalked"=>10, "name"=>"user3"}]
[{"timesWalked"=>5, "name"=>"user2"}]
在本例中,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", 0=>20, 1=>"user1"}]
[{"timesWalked"=>20, "name"=>"user1"}]
[{"timesWalked"=>10, "name"=>"user3"}]
[{"timesWalked"=>5, "name"=>"user2"}]
在本例中,用户表中的用户名与用户表中的时间漫游相关联


我如何返回所有的Timesweed和所有遛宠物的用户名?

您可以使用内部连接来实现这一点。 下面的查询列出了在总时间内遛过所有宠物的所有用户。 i、 e.用户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

看看这把小提琴:

您可以使用内部连接来实现这一点。 下面的查询列出了在总时间内遛过所有宠物的所有用户。 i、 e.用户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

看看这把小提琴:

添加一些示例表数据和预期结果。请使用格式化的文本,而不是图像。请尝试使用
左联接
。左联接不会正确地关联名称,它只会按降序返回所有的时间遍历。当前查询是正确的。它为每个用户显示一个结果行,即用户和行走时间,忽略了用户行走宠物的信息。如果您认为它只返回一行,那么您就错了,或者您的表数据与您认为的不同。我假设您在编写的某个应用程序中使用了该查询,只是错误地获取了第一行。您为什么说该查询没有显示关联的用户?你说user1=20是错误的,因为user1没有让宠物走20次,但是你希望在你请求的结果中有相同的一行。您忘记了users和pets表中的id,但我认为user1是id 1,在这种情况下,user1是其中一只宠物行走20次的用户。添加一些示例表数据和预期结果。请使用格式化的文本,而不是图像。请尝试使用
左联接
。左联接不会正确地关联名称,它只会按降序返回所有的时间遍历。当前查询是正确的。它为每个用户显示一个结果行,即用户和行走时间,忽略了用户行走宠物的信息。如果您认为它只返回一行,那么您就错了,或者您的表数据与您认为的不同。我假设您在编写的某个应用程序中使用了该查询,只是错误地获取了第一行。您为什么说该查询没有显示关联的用户?你说user1=20是错误的,因为user1没有让宠物走20次,但是你希望在你请求的结果中有相同的一行。您忘记了users and pets表中的id,但我认为user1是id 1,在这种情况下,user1是其中一只宠物行走了20次的用户。编辑后只获取结果,不获取总和。如果它回答了您的问题,请将其标记为答案。感谢你只得到结果而不是总数。如果它回答了您的问题,请将其标记为答案。谢谢