如何连接两个表并返回两个表中的所有行

时间:2014-12-29 07:24:43

标签: php mysql database join inner-join

我有两张桌子。用户和书籍,我想加入这两个表并返回两个表的所有行。 “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];
   }

感谢。

8 个答案:

答案 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;