【问题标题】:SQL JOIN clarity with multiple tables多个表的 SQL JOIN 清晰度
【发布时间】:2016-01-27 23:58:40
【问题描述】:

所以,我有这个我无法更改的 SQL 架构,我正在尝试使用 GAS 脚本将数据拉出并放入 Google 表格。它返回 0 个结果。如果我删除最后一个 JOIN 和 SELECT 列的最后(相应)行,我会得到 507 个结果。我知道这与引用与 FROM 子句中的主表不直接相关的表有关。这是删除了一步。

我希望能在这里接受一点教育......

:-)

PS:不,我没有编写/设计/命名架构/表/列,不幸的是我无权修改任何内容......只是阅读。

SELECT table_tasktime.tasktime_employee, table_tasktime.tasktime_task,
       table_tasktime.tasktime_start, table_tasktime.tasktime_end,
       table_taskgroups.taskgroup_task, table_taskgroups.taskgroup_group,
       table_employees.employee_id, table_employees.employee_firstname,
       table_employees.employee_lastname, table_tasks.task_name,
       table_groups.group_id, table_groups.group_name
FROM table_tasktime
     INNER JOIN table_taskgroups 
          ON table_taskgroups.taskgroup_task = table_tasktime.tasktime_task
     INNER JOIN table_employees
          ON table_employees.employee_id = table_tasktime.tasktime_employee
     INNER JOIN table_tasks
          ON table_tasks.task_id = table_tasktime.tasktime_task
     INNER JOIN table_groups
          ON table_groups.group_id = table_taskgroups.taskgroup_id
WHERE (table_tasktime.tasktime_start BETWEEN '2016-01-01' AND '2016-01-25 23:59:59')

【问题讨论】:

  • 从 table_taskgroups 中选择不同的 taskgroup_id 然后,从 table_groups 中选择不同的 group_id。有没有重叠?你在比较喜欢和喜欢吗?
  • 如果您将最后一个联接更改为 LEFT JOIN,您会得到 507 结果吗?
  • 是的... LEFT join 解决了这个问题。我现在将阅读并尝试找出原因。谢谢你让我克服困难。
  • 我得到了结果,但变量 (table_groups.group_id) 和 (table_groups.group_name) 的数据没有从 SELECT 中填充。我认为这是左连接的问题。我认为我需要的是 MySQL 中缺少的 FULL OUTER JOIN。这可能会有所帮助......但我认为这个过程会比单独拉入组表并在 Google 表格中使用 =QUERY() 来填补空白要慢。感谢大家的帮助。 stackoverflow.com/questions/4796872/full-outer-join-in-mysql

标签: mysql sql-server join inner-join multiple-tables


【解决方案1】:

关于连接的快速运行:- 使用 INNER JOIN,您将在连接两边都可用谓词(ON)子句的地方取回数据。 使用 LEFT [OUTER] JOIN,您可以从左表、您要加入的表和右表中获取数据,该表被“附加”到它所在的位置。 您还可以使用与左连接相反的 RIGHT [OUTER] JOIN,以及为您提供两个表的完整笛卡尔积的 CROSS JOIN。

希望这对您有所帮助。那里有很多东西。

【讨论】:

    猜你喜欢
    • 2023-02-25
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多