SQL/PHP - 根据列值调用相同的 Table 两次
SQL/PHP - Calling Same Table Twice Based on Column Value
这是我的 table 的一般设置:
users
-------------
user_id | user_first | user_last | user_friendlist
1 | John | Doe | 2,3
2 | Jimmy | John | 1,3
3 | Papa | John | 1,2
- 首先,我将select上面的table使用user_id并检索user_friendlist。
- 然后,我想使用 user_friendlist 并检索 user_first & user_last。
我尝试了 Left JOIN,但我不确定如何调用相同的 table 两次...请帮忙!尝试执行准备语句时会让人感到困惑。
第一部分的总代码:
$selectData = $con->prepare("SELECT
user_friendlist
FROM
users
WHERE
user_id=?");
$selectData->bind_param("i", $user_id);
$user_id = $_POST['user_id'];
$selectData -> execute();
$selectData-> bind_result($user_friendlist);
$arr = array();
while ( $selectData -> fetch() ) {
$arr[] = $user_friendlist;
}
echo json_encode($arr);
你应该有两个 tables 用户和朋友
用户会喜欢
| user_id | user_first | user_last |
| 1 | John | Doe |
| 2 | Jimmy | John |
| 3 | Papa | John |
和朋友
| user_id | freind_id |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
user_id
是 table users
的程序密钥
user_id
和 friend_id
是 table friend
的主键
friends.user_id
和 friends.friend_id
是 users.user_id
的外键
查询将类似于
SELECT users2.user_first AS friend_first,users2.user_last AS friend_last
-- ,users1.user_first AS user_first,users1.user_last AS user_last
-- uncomment the last line to get the user info with his friends
FROM users as users1
join friends
ON users1.user_id=friends.user_id
JOIN users AS users2
ON users2.user_id=friends.friend_id
WHERE users1.user_id=1
查询结果为
| friend_first | friend_last |
| Jimmy | John |
| Papa | John |
这是我的 table 的一般设置:
users
-------------
user_id | user_first | user_last | user_friendlist
1 | John | Doe | 2,3
2 | Jimmy | John | 1,3
3 | Papa | John | 1,2
- 首先,我将select上面的table使用user_id并检索user_friendlist。
- 然后,我想使用 user_friendlist 并检索 user_first & user_last。
我尝试了 Left JOIN,但我不确定如何调用相同的 table 两次...请帮忙!尝试执行准备语句时会让人感到困惑。
第一部分的总代码:
$selectData = $con->prepare("SELECT
user_friendlist
FROM
users
WHERE
user_id=?");
$selectData->bind_param("i", $user_id);
$user_id = $_POST['user_id'];
$selectData -> execute();
$selectData-> bind_result($user_friendlist);
$arr = array();
while ( $selectData -> fetch() ) {
$arr[] = $user_friendlist;
}
echo json_encode($arr);
你应该有两个 tables 用户和朋友
用户会喜欢
| user_id | user_first | user_last |
| 1 | John | Doe |
| 2 | Jimmy | John |
| 3 | Papa | John |
和朋友
| user_id | freind_id |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
user_id
是 table users
user_id
和 friend_id
是 table friend
friends.user_id
和 friends.friend_id
是 users.user_id
查询将类似于
SELECT users2.user_first AS friend_first,users2.user_last AS friend_last
-- ,users1.user_first AS user_first,users1.user_last AS user_last
-- uncomment the last line to get the user info with his friends
FROM users as users1
join friends
ON users1.user_id=friends.user_id
JOIN users AS users2
ON users2.user_id=friends.friend_id
WHERE users1.user_id=1
查询结果为
| friend_first | friend_last |
| Jimmy | John |
| Papa | John |