Php Mysql查询,选择join two table
我有一个LIKE表、一个BOOK表和我的用户id 我只想从书桌上拿出我喜欢的书,上面有书名和作者 我的json将:Php Mysql查询,选择join two table,php,mysql,sql,Php,Mysql,Sql,我有一个LIKE表、一个BOOK表和我的用户id 我只想从书桌上拿出我喜欢的书,上面有书名和作者 我的json将: {book_id:1,bookname:sample,author:sean,user_id:111} 桌子 -----------BOOK TABLE------------ ID ---- BOOK AUTHOR ---- BOOK NAME 1 2 ................................... USERS TABLE ID-------NA
{book_id:1,bookname:sample,author:sean,user_id:111}
桌子
-----------BOOK TABLE------------
ID ---- BOOK AUTHOR ---- BOOK NAME
1
2
...................................
USERS TABLE
ID-------NAME
1
2
.............
LIKE TABLE---------------------------
ID-----BOOK ID-------LIKER USER ID---
1
2
.....................................
要获取与喜欢相关的所有数据,可以运行此sql命令。 您可以循环并生成JSON的结果集。 确保在查询中正确指定了所有列名
select
b.book_id,
b.bookname,
b.author,
u.user_id
from
`like` l
inner join book b on b.book_id = l.book_id
inner join users u on u.user_id = l.user_id
如果需要筛选数据,只需在最后一次连接后添加where条件即可
where u.user_id = {your user id}
我应该把$user\u id放在哪里?在u.user=l.user\u id->上的内部连接用户u?你是说u.user\u id=l.user\u id吗?为什么我不能获得重复值密钥对?如果数组写得太多,请检查循环。也可以先在mysql上试试这个查询,看看你得到了什么。这并不是真正的结果,我需要“用户喜欢的书名和书号”。如果不太迟的话,我会考虑重命名类似的表。随着时间的推移,使用保留字作为表名会变得很烦人。
$stmt = $mysqli->prepare("SELECT book.*, users.*, like.* FROM like INNER JOIN
users ON like.liker_user_id = users.id INNER JOIN
book ON like.book_id = book.id WHERE
users.id = ?
");
$stmt->bind_param( "d", $user_id);
$stmt->execute();
$stmt->bind_result($col1);
// then fetch and close the statement