使用 SQL 获取真实列
Get real column with SQL
我想知道在我的请求中如何才能在 return 上有一个真实的列(代码)。
I have always the same code from Peoples table, and not the real code : it's the parent code and not the child code.
目前我有4张桌子:
| Peoples (id, code) <- this code
| PeopleFriends (id, fk_user_id, fk_friend_id)
| PeopleTranslations (id, user_name, fk_people_id, fk_language_id)
| Languages (id, code)
有了这个数据:
Peoples:
[id: 1, code: HUMAN1]
[id: 2, code: HUMAN2]
[id: 3, code: HUMAN3]
[id: 4, code: HUMAN4]
[id: 5, code: HUMAN5]
PeopleFriends:
[id: 1, fk_user_id: 1, fk_friend_id: 2]
[id: 2, fk_user_id: 1, fk_friend_id: 3]
[id: 3, fk_user_id: 1, fk_friend_id: 4]
[id: 4, fk_user_id: 1, fk_friend_id: 5]
PeopleTranslations:
[id: 1, username: "username human 1", fk_people_id: 1, fk_language_id: 1]
[id: 2, username: "username human 2", fk_people_id: 2, fk_language_id: 1]
[id: 3, username: "username human 3", fk_people_id: 3, fk_language_id: 1]
[id: 4, username: "username human 4", fk_people_id: 4, fk_language_id: 1]
[id: 5, username: "username human 5", fk_people_id: 5, fk_language_id: 1]
Languages:
[id: 1, code: "EN"]
如果我执行这个请求:
SELECT pt.fk_people_id AS id, p.code, pt.user_name FROM Peoples p
INNER JOIN PeopleFriends pf ON p.id = pf.fk_user_id
INNER JOIN PeopleTranslations pt ON pf.fk_friend_id = pt.fk_people_id
INNER JOIN Languages l ON pt.fk_language_id = l.id
WHERE l.code = 'EN'
AND p.id = 1
我有这个结果:
[
TextRow {
id: 2,
code: 'HUMAN1', <--- I would like HUMAN2, not parent code
user_name: 'username human 2',
},
TextRow {
id: 3,
code: 'HUMAN1', <--- I would like HUMAN3, not parent code
user_name: 'username human 3',
},
TextRow {
id: 4,
code: 'HUMAN1', <--- I would like HUMAN4, not parent code
user_name: 'username human 4',
},
TextRow {
id: 5,
code: 'HUMAN1', <--- I would like HUMAN5, not parent code
user_name: 'username human 5',
}
]
...
我一直使用相同的代码“HUMAN1”,而不是真正的代码“HUMAN2”、“HUMAN3”、“HUMAN4”
这是 p.id = 1...
的代码
我尝试添加p.code,但我有同样的错误。
SELECT pt.fk_people_id AS id,
p1.code,
pt.user_name
FROM Peoples p
INNER JOIN PeopleFriends pf ON p.id = pf.fk_user_id
INNER JOIN Peoples p1 ON p1.id = pf.fk_friend_id
INNER JOIN PeopleTranslations pt ON pf.fk_friend_id = pt.fk_people_id
INNER JOIN Languages l ON pt.fk_language_id = l.id
WHERE l.code = 'EN'
AND p.id = 1
考虑到WHERE中的条件,查询可以简化为
SELECT pt.fk_people_id AS id,
p1.code,
pt.user_name
FROM PeopleFriends pf
INNER JOIN Peoples p1 ON p1.id = pf.fk_friend_id
INNER JOIN PeopleTranslations pt ON pf.fk_friend_id = pt.fk_people_id
INNER JOIN Languages l ON pt.fk_language_id = l.id
WHERE l.code = 'EN'
AND pf.fk_user_id = 1
我想知道在我的请求中如何才能在 return 上有一个真实的列(代码)。
I have always the same code from Peoples table, and not the real code : it's the parent code and not the child code.
目前我有4张桌子:
| Peoples (id, code) <- this code
| PeopleFriends (id, fk_user_id, fk_friend_id)
| PeopleTranslations (id, user_name, fk_people_id, fk_language_id)
| Languages (id, code)
有了这个数据:
Peoples:
[id: 1, code: HUMAN1]
[id: 2, code: HUMAN2]
[id: 3, code: HUMAN3]
[id: 4, code: HUMAN4]
[id: 5, code: HUMAN5]
PeopleFriends:
[id: 1, fk_user_id: 1, fk_friend_id: 2]
[id: 2, fk_user_id: 1, fk_friend_id: 3]
[id: 3, fk_user_id: 1, fk_friend_id: 4]
[id: 4, fk_user_id: 1, fk_friend_id: 5]
PeopleTranslations:
[id: 1, username: "username human 1", fk_people_id: 1, fk_language_id: 1]
[id: 2, username: "username human 2", fk_people_id: 2, fk_language_id: 1]
[id: 3, username: "username human 3", fk_people_id: 3, fk_language_id: 1]
[id: 4, username: "username human 4", fk_people_id: 4, fk_language_id: 1]
[id: 5, username: "username human 5", fk_people_id: 5, fk_language_id: 1]
Languages:
[id: 1, code: "EN"]
如果我执行这个请求:
SELECT pt.fk_people_id AS id, p.code, pt.user_name FROM Peoples p
INNER JOIN PeopleFriends pf ON p.id = pf.fk_user_id
INNER JOIN PeopleTranslations pt ON pf.fk_friend_id = pt.fk_people_id
INNER JOIN Languages l ON pt.fk_language_id = l.id
WHERE l.code = 'EN'
AND p.id = 1
我有这个结果:
[
TextRow {
id: 2,
code: 'HUMAN1', <--- I would like HUMAN2, not parent code
user_name: 'username human 2',
},
TextRow {
id: 3,
code: 'HUMAN1', <--- I would like HUMAN3, not parent code
user_name: 'username human 3',
},
TextRow {
id: 4,
code: 'HUMAN1', <--- I would like HUMAN4, not parent code
user_name: 'username human 4',
},
TextRow {
id: 5,
code: 'HUMAN1', <--- I would like HUMAN5, not parent code
user_name: 'username human 5',
}
]
...
我一直使用相同的代码“HUMAN1”,而不是真正的代码“HUMAN2”、“HUMAN3”、“HUMAN4”
这是 p.id = 1...
的代码我尝试添加p.code,但我有同样的错误。
SELECT pt.fk_people_id AS id,
p1.code,
pt.user_name
FROM Peoples p
INNER JOIN PeopleFriends pf ON p.id = pf.fk_user_id
INNER JOIN Peoples p1 ON p1.id = pf.fk_friend_id
INNER JOIN PeopleTranslations pt ON pf.fk_friend_id = pt.fk_people_id
INNER JOIN Languages l ON pt.fk_language_id = l.id
WHERE l.code = 'EN'
AND p.id = 1
考虑到WHERE中的条件,查询可以简化为
SELECT pt.fk_people_id AS id,
p1.code,
pt.user_name
FROM PeopleFriends pf
INNER JOIN Peoples p1 ON p1.id = pf.fk_friend_id
INNER JOIN PeopleTranslations pt ON pf.fk_friend_id = pt.fk_people_id
INNER JOIN Languages l ON pt.fk_language_id = l.id
WHERE l.code = 'EN'
AND pf.fk_user_id = 1