我的数据库中有三个表,一个用于存储用户详细信息,一个用于存储团队详细信息,另一个用于存储用户和团队ID以识别哪个团队属于用户.
我现在想从DB中获取属于所选组的所有用户.我这样做是这样的:
SELECT u.name, u.image FROM groups g, user_groups ug, users u WHERE
g.id = ? AND ug.group_id = g.id
Run Code Online (Sandbox Code Playgroud)
但我没有得到我想要的结果.正如您在上面的附图中所看到的,我在一个组中有两个用户,所以我期待在我的响应中有两个记录,但这是我得到的响应:
JSON response:
{
"error": false,
"users": [
{
"name": "Dušan Dimitrijevi?", // This is the user from selected group, but i'm getting duplicate record
"image": "http://192.168.42.6:8081/timster/uploads/user_images/%2018.png"
},
{
"name": "Dušan Dimitrijevi?",
"image": "http://192.168.42.6:8081/timster/uploads/user_images/%2018.png"
},
{
"name": "Miroslav", // And this one too, but also duplicated
"image": "null"
},
{
"name": "Miroslav",
"image": "null"
},
{
"name": "Pera Peric",
"image": "null"
},
{
"name": "Pera Peric",
"image": "null"
},
{
"name": "Marko Markovic",
"image": "null"
},
{
"name": "Marko Markovic",
"image": "null"
},
{
"name": "Stefan Dimitrijevic",
"image": "null"
},
{
"name": "Stefan Dimitrijevic",
"image": "null"
},
{
"name": "Petar Nikolic",
"image": "null"
},
{
"name": "Petar Nikolic",
"image": "null"
},
{
"name": "Nikola Ristic",
"image": "null"
},
{
"name": "Nikola Ristic",
"image": "null"
}
]
}
Run Code Online (Sandbox Code Playgroud)
所以,我想我在查询SELECT中做错了.
我认为您实现的关系错误,您应该根据用户ID加入user_group表.
而且,您应该考虑使用JOIN语句:
SELECT
u.name,
u.image
FROM
users u
INNER JOIN
user_groups ug
ON ug.user_id = u.id
WHERE
ug.group_id = ?
Run Code Online (Sandbox Code Playgroud)
(我假设你的user_group表有一个user_id字段?)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |