【发布时间】: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