左连接,我需要一个关于代码的解释

没有不可能

我在看教程。有一个代码,我不明白应该做什么。

$sql = 'SELECT p.*, 
      a.screen_name AS author_name, 
      c.name AS category_name
    FROM 
      posts p
      LEFT JOIN 
        admin_users a ON p.author_id = a.id
      LEFT JOIN 
        categories c ON p.category_id = c.id
    WHERE 
      p.id = ?';

我读过左连接,但我不理解它们。有人可以解释我分享的代码吗?提前致谢!

杰明

假设你有两张桌子。一个用于存储有关您网站上程序员的信息,另一个表用于跟踪他们的在线购买情况。

程序员表

+--------------------------------------------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Desire   |  32 | 123 fake s|  3000.00 |
|  2 | Jamin    |  25 | 234 fake s|  2500.00 |
|  3 | Jon      |  23 | 567 fake s|  2000.00 |
|  4 | Bob      |  30 | 789 fake s|  1500.00 |
|  5 | OtherGuy |  31 | 890 fake s|  1000.00 |
|  6 | DudeMan  |  32 | 901 fake s|   500.00 |
+--------------------------------------------+

采购表

+---------------------------------------------+
| ORDER_ID    | PROG_ID |    DATE    | PRICE  | 
+-------------+---------+---------------------|
|  1          | 1       |  1-1-2017  | 100    |
|  2          | 2       |  1-2-2017  | 200    |
|  3          | 6       |  1-3-2017  | 300    |
+---------------------------------------------|

您决定需要创建一个新表以将此信息合并到包含您想要的某些列的表中。

例如,您认为拥有一个包含 ID、NAME、PRICE 和 DATE 列的表对于运输来说会很好。

目前,我们拥有的表格并未在单个表格中显示所有这些内容。

如果我们要 LEFT JOIN 这些表,我们最终会用 NULL 值填充所需的列,而没有信息要加入。

SELECT ID, NAME, PRICE, DATE
    FROM PROGRAMMERS
    LEFT JOIN PURCHASES
    ON PROGRAMMERS.ID = PURCHASES.PROG_ID;

请注意,我正在从起始表中选择我想要的列,然后加入正确的表,即使可能缺少信息。

结果表

+-------------------------------------+
| ID | NAME     | PRICE   |   DATE    |
+----+----------+-----------------+---+
|  1 | Desire   | 100     | 1-1-2017  |
|  2 | Jamin    | 200     | 1-2-2017  |
|  3 | Jon      | NULL    |   NULL    |
|  4 | Bob      | NULL    |   NULL    |
|  5 | OtherGuy | NULL    |   NULL    |
|  6 | DudeMan  | 300     | 1-3-2017  |
+-------------------------------------+

有关 SQL JOIN 之间差异的直观表示,请查看https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我需要一个解释

来自分类Mysql

如何在一个方法,我需要在yii2在左数据连接分配?

来自分类Dev

CSS过渡-我需要一个解释

来自分类Dev

请解释下面的代码(这是一个关于C++中for循环参数的问题):

来自分类Dev

我需要一些关于排序节点的解释

来自分类Dev

我需要知道一个 javascript 代码

来自分类Dev

我需要一个简单的导航栏 css 代码

来自分类Dev

这是一个代码,用于计算mysql表中的值的中位数,我需要一些专家来解释命令执行的顺序

来自分类Dev

我是编码新手。我需要一个快速的解释

来自分类Dev

如何向 Visual Studio 解释我的源代码在另一个目录中?

来自分类Dev

我有一个关于此链表合并代码如何工作的快速问题

来自分类Dev

这段关于寻找最长子字符串的python代码,我需要解释

来自分类Dev

需要一些关于malloc的解释

来自分类Dev

需要一些关于以下 Typescript/Javascript 和 MobX 代码的工作的解释

来自分类Dev

我需要这段代码,我有一个无法解决的排序问题

来自分类Dev

我有一个 POST 请求,需要传递正文参数,在我下面的代码中

来自分类Dev

我不理解完成处理程序,我的代码中需要一个

来自分类Dev

我需要编写一个 post api,它返回 201 作为我的 http 代码。爪哇

来自分类Dev

需要解释一个表达式

来自分类Dev

我需要一些关于批处理文件的建议如果存在,然后跟随一个循环

来自分类Dev

需要一个关于如何实现这个问题的逻辑

来自分类Dev

这是一个关于python中列表的问题。我们可以连接两个列表吗

来自分类Dev

再看一下Java代码,我能否对黑体字有一个准确的解释?

来自分类Dev

关于使用一段时间来“拥抱”我的代码而不是调用main()的另一个问题

来自分类Java

我需要修复我的代码的帮助,我不确定最终如何使它给我一个整体

来自分类Dev

为什么我需要一个IoC容器而不是简单的DI代码?

来自分类Mysql

我需要一个Mysql查询来执行计算以输出以下代码

来自分类Dev

需要一个代码来允许用户随时重新启动我的 python 测验

来自分类Dev

C代码返回一个128位(已定义GCC),我需要读取此值

Related 相关文章

  1. 1

    我需要一个解释

  2. 2

    如何在一个方法,我需要在yii2在左数据连接分配?

  3. 3

    CSS过渡-我需要一个解释

  4. 4

    请解释下面的代码(这是一个关于C++中for循环参数的问题):

  5. 5

    我需要一些关于排序节点的解释

  6. 6

    我需要知道一个 javascript 代码

  7. 7

    我需要一个简单的导航栏 css 代码

  8. 8

    这是一个代码,用于计算mysql表中的值的中位数,我需要一些专家来解释命令执行的顺序

  9. 9

    我是编码新手。我需要一个快速的解释

  10. 10

    如何向 Visual Studio 解释我的源代码在另一个目录中?

  11. 11

    我有一个关于此链表合并代码如何工作的快速问题

  12. 12

    这段关于寻找最长子字符串的python代码,我需要解释

  13. 13

    需要一些关于malloc的解释

  14. 14

    需要一些关于以下 Typescript/Javascript 和 MobX 代码的工作的解释

  15. 15

    我需要这段代码,我有一个无法解决的排序问题

  16. 16

    我有一个 POST 请求,需要传递正文参数,在我下面的代码中

  17. 17

    我不理解完成处理程序,我的代码中需要一个

  18. 18

    我需要编写一个 post api,它返回 201 作为我的 http 代码。爪哇

  19. 19

    需要解释一个表达式

  20. 20

    我需要一些关于批处理文件的建议如果存在,然后跟随一个循环

  21. 21

    需要一个关于如何实现这个问题的逻辑

  22. 22

    这是一个关于python中列表的问题。我们可以连接两个列表吗

  23. 23

    再看一下Java代码,我能否对黑体字有一个准确的解释?

  24. 24

    关于使用一段时间来“拥抱”我的代码而不是调用main()的另一个问题

  25. 25

    我需要修复我的代码的帮助,我不确定最终如何使它给我一个整体

  26. 26

    为什么我需要一个IoC容器而不是简单的DI代码?

  27. 27

    我需要一个Mysql查询来执行计算以输出以下代码

  28. 28

    需要一个代码来允许用户随时重新启动我的 python 测验

  29. 29

    C代码返回一个128位(已定义GCC),我需要读取此值

热门标签

归档