我有两张桌子。用户和书籍,我想加入这两个表并返回两个表的所有行。 “uid”中的公共列;
书籍的sql语句。
SELECT * FROM books ORDER BY TIME DESC;
从上面我得到user_id'uid'并在单独的查询中使用它。
对于用户而言。
SELECT * FROM users WHERE uid = '$uid';
我希望最终得到类似下面的内容,而不是从table.books和table.users进出数据库。
while($row = mysqli_fetch_array($query)){
echo $row[book_name];
echo $row[user_firstname];
}
感谢。
答案 0 :(得分:2)
您必须在数据库中查找JOIN的基础知识,以了解如何连接两个表以检索特定数据。
试试这个:
SELECT *
FROM books b
INNER JOIN users u ON b.uid = u.uid
ORDER BY b.TIME DESC;
答案 1 :(得分:0)
选择a。,b。 FROM books INNER JOIN用户b ON(a.id = b.uid)
答案 2 :(得分:0)
尝试使用以下查询来获取两个表中的所有数据,而不进行任何过滤
select * from Users u,Books b where u.user_id=b.uid
如果你给了GROUP BY或任何其他约束,那么在“Where”子句之后使用“和”来表示条件。
答案 3 :(得分:0)
这将返回书籍和用户的所有行
SELECT *
FROM books b
FULL OUTER JOIN users u ON b.uid=u.uid;
答案 4 :(得分:0)
选择books.bookname,books中的users.user_firstname加入books.id = users.id上的用户
答案 5 :(得分:0)
试试这个会起作用:
使用内部加入
SELECT t1.*,t2.`user_firstname` FROM books t1
JOIN users t2 ON t2.`uid` = t1.`uid`
答案 6 :(得分:0)
这称为FULL JOIN,您可以在MySql中实现它
SELECT *
FROM books AS b
LEFT JOIN users AS u ON b.uid = u.uid
UNION
SELECT *
FROM books AS b
RIGHT JOIN users AS u ON b.uid = u.uid
订购
SELECT t.*
FROM (
SELECT *
FROM books AS b
LEFT JOIN users u ON b.uid = u.uid
UNION
SELECT *
FROM books AS b
RIGHT JOIN users AS u ON b.uid = u.uid
) t
ORDER BY t.TIME DESC;
答案 7 :(得分:-1)
SELECT b.*, u.uid
FROM books b
INNER JOIN users u ON b.uid = u.uid
ORDER BY b.TIME DESC;