2016-01-27 52 views
0

所以,我有这个SQL模式,我不能改变,我试图使用GAS脚本将数据拉出并放入Google表格。它返回0结果。如果我删除最后一个JOIN和SELECT列的最后(对应)行,我会得到507个结果。我知道这与引用与FROM子句中的主表没有直接关系的表有关。这是一步删除。SQL JOIN与多个表的清晰度

我会欣赏的一点教育在这里...

:-)

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') 
+0

从table_taskgroups中选择不同的taskgroup_id然后,从table_groups中选择不同的group_id。有没有重叠?你比较像喜欢吗? – CustodianOfCode

+0

如果您将最后一次加入更改为LEFT JOIN,您是否获得了507个结果? –

+0

是的...左连接解决了这个问题。我现在会读,并试图找出原因。谢谢你让我在这里驼峰。 –

回答

0

一个快速运行下来联接: - 随着INNER JOIN,你会找回数据,其中谓词(ON)子句可以用的连接两侧。 通过LEFT [OUTER] JOIN,您可以从左表,您要加入的表以及右表中的数据中获取数据,该表被“附加”在其存在的位置。 您还可以拥有与左连接相反的RIGHT [OUTER] JOIN和CROSS JOIN,它们将为您提供两个表的完整笛卡尔乘积。

希望这可以帮助你作为一个起点。那里有很多东西。