我有两个表:'帖子'和'用户'每个帖子都有一个'ref_id'列来获取发布它的用户ID。
现在,我正以这种方式获得帖子:
$this->db->query("SELECT * FROM posts WHERE time > '$timeLimit' LIMIT 50");
我无法理解如何加入每个结果以获取海报相关数据。我现在正在做的基本上是一个循环内部的循环,结果的foreach,获取他们的用户信息。但很明显,这是非常错误的,
显然我需要开始使用连接,但是如何做呢?我认为这应该是一个非常简单的例子。
有任何帮助吗?谢谢。
答案 0 :(得分:1)
SELECT posts.*, users.*
FROM posts
INNER JOIN users
ON posts.posted_by = users.id;
答案 1 :(得分:1)
像这样:
SELECT
posts.*,,
users.Username
FROM posts
INNER JOIN users ON posts.ref_id = users.user_id;
JOIN
与彼此的任何表格相同,有两件事; JOIN
类型和连接条件。联接有三种主要类型:
INNER JOIN
,只有匹配连接条件的行将从两个表中返回,不再有行。但是:
LEFT OUTER JOIN
,当你加入两个表时,你会在join关键字的左边有一个,另一个在右边:
FROM Table1< -------------这是左表。 LEFT OUTER JOIN table2 ....< -------------这是正确的表格。
在LEFT OUTER JOIN
中,左表中不匹配的行将包含在结果集中。
RIGHT OUTER JOIN
右表中不匹配的行将包含在结果集中。
CROSS JOIN
这将从两个表中执行笛卡尔积。
在我们的查询中,只有当users
等于ref_id
列形成user_id
表时,查询才会从posts
表中重新计算所有用户。
有关更多信息和解释:
答案 2 :(得分:0)
SELECT user.name
FROM users
INNER JOIN posts
ON posts.ref_id == user.id
AND posts.time > 50