mysql join选择解释

时间:2013-02-10 10:11:07

标签: php mysql join

我有两个表:'帖子'和'用户'每个帖子都有一个'ref_id'列来获取发布它的用户ID。

现在,我正以这种方式获得帖子:

$this->db->query("SELECT * FROM posts WHERE time > '$timeLimit' LIMIT 50");

我无法理解如何加入每个结果以获取海报相关数据。我现在正在做的基本上是一个循环内部的循环,结果的foreach,获取他们的用户信息。但很明显,这是非常错误的,

显然我需要开始使用连接,但是如何做呢?我认为这应该是一个非常简单的例子。

有任何帮助吗?谢谢。

3 个答案:

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

http://www.w3schools.com/sql/sql_join_inner.asp