MySQL加入。匹配两列中的两个条件

时间:2016-10-01 22:21:14

标签: mysql codeigniter join

我正在尝试使用连接从2个表中获取数据。但我不知道该怎么做。我已经阅读了关于连接的内容,但由于我是新手,因此没有任何意义。

我有两张桌子。

 Playgrounds           Inspection 

   id   u_id          id    playground_id
   1    2              1     1
   2    2              2     2     

游乐场表中id是游乐场ID并且是唯一的,u_id是游乐场的用户。

检查表中,id是唯一的,playground_id用作 playgrounds 表的ID的外键。

我的问题是我必须将idu_id传递给 playgrounds 表中的查询,然后它应该从playground table中选择id。然后它应该根据该ID从检查表中选择所有内容。

希望我已经正确解释了它。

非常感谢任何帮助。

提前致谢

1 个答案:

答案 0 :(得分:1)

JOIN次操作,无论INNER JOINLEFT JOIN还是RIGHT JOIN,都有这种整体语法。

   table_expression JOIN table_expression ON boolean_expression

当布尔表达式为真时,JOIN将两个表的匹配行连接成结果中的单个行。

在您的情况下,您希望ON子句的布尔表达式说明

  Playgrounds.id = Inspection.playground_id

因为您知道Inspection中的一行与Playgrounds中的行有关。因此,声明如

 SELECT Inspection.id AS Inspection_ID,
        Playgrounds.id AS Playground_ID,
        Playgrounds.u_id AS User_ID
   FROM Playgrounds
   JOIN Inspection ON Playgrounds.id = Inspection.playground_id
  WHERE Playgrounds.u_id = something
    AND Playgrounds.id = something_else

看看它怎么样?您的SELECT通过在ON子句中选择的条件中加入两个现有表的行来创建一个新表,有时称为结果集。

您可以将任何想要的内容放入ON子句中。你可以把

Playgrounds.id = Inspection.playground_id OR Inspection.id < 20

Playgrounds.id = Inspection.playground_id OR Inspection.scope = 'citywide'

例如(如果scope表中有Inspection列。)

但是,在掌握基本的JOIN操作之前,请不要去那里。