首页 > 解决方案 > 如果一张桌子可以提供我们需要的信息,我需要加入另一张桌子吗

问题描述

我有两个表,table1 有一个外键 table2。我想从 table1 获取一些信息,包括 table1 和 table2 都有的列。我应该加入这两个表以获取信息吗?例如:我有两个表 Course 和 Student,如下所示

在此处输入图像描述

Solution1:

Course
|project CourseId, CouseName, StudentName, StudentId

Solution2:
Course
| project CourseId, CourseName, StudentName
| join Student
on $left.StudentId == $right.StudentId
| project CourseId, CourseName, StudentName
 

获取CourseId、CourseName和StudentName,哪种方案是正确的?选择解决方案2是一个好习惯吗?

请忽略表设计。这只是一个例子。问题来自一个真实的项目,我们需要从一个表中查询,该表包含一个外部 id 和来自另一个表的公共列。查询应该返回公共列。是否有必要加入第二个表以获得公共列?

标签: c#azure-data-explorer

解决方案


课程表不应该有学生姓名,它是冗余数据。是的,您可以在学生 ID 上使用内连接或左连接。请记住您提供的给定信息,课程表中学生 ID 可以为空或不能为空的情况。


推荐阅读