Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何连接两个表在不存在id为空的行上获得记录显示_Sql_Sql Server - Fatal编程技术网

Sql 如何连接两个表在不存在id为空的行上获得记录显示

Sql 如何连接两个表在不存在id为空的行上获得记录显示,sql,sql-server,Sql,Sql Server,我想要下面提到的预期结果。 下面是SQL查询: +-------------------------------------------+ | student Details | +-------------------------------------------+ |DetailsID(Idendtity)| StudentID| subjectID | | 1 | 101 | 1001

我想要下面提到的预期结果。 下面是SQL查询:

+-------------------------------------------+
|              student Details              |
+-------------------------------------------+
|DetailsID(Idendtity)| StudentID| subjectID |
|      1             |  101     |    1001   |
|      2             |  101     |    1002   |   
+-------------------------------------------+

+-------------------------------------------+
|              Assign student               |
+-------------------------------------------+
|   AssingID         | StudentID| subjectID |
|      1             |  101     |    1001   |
|      1             |  101     |    1002   |   
+-------------------------------------------+
SELECT Distinct * FROM
   tbl_Studentdetails s LEFT OUTER JOIN  
   tbl_Assignstudent a ON s.studentID = a.studentID
   WHERE AssignId=1
实际结果:

SELECT Distinct * FROM
   tbl_Studentdetails s LEFT OUTER JOIN  
   tbl_Assignstudent a ON s.studentID = a.studentID
   WHERE AssignId=1
预期结果:

SELECT Distinct * FROM
   tbl_Studentdetails s LEFT OUTER JOIN  
   tbl_Assignstudent a ON s.studentID = a.studentID
   WHERE AssignId=1
+----------------------------------------+
| StudentID | subjectID | Exam 1 | Exam2 | 
|   101     |    1001   |  10:00 | 10:00 |
|   101     |    1002   |  01:00 | 02:00 |
+----------------------------------------+

WHERE
子句中的AssignId条件使
左连接
返回常规的
内部连接
结果。将条件移动到
ON
子句以获得true
LEFT JOIN
结果:

SELECT Distinct * FROM
   tbl_Studentdetails s LEFT OUTER JOIN  
   tbl_Assignstudent a ON s.studentID = a.studentID
   WHERE AssignId=1
+----------------------------------------+
| StudentID | subjectID | Exam 1 | Exam2 | 
|   101     |    1001   |  10:00 | 10:00 |
|   101     |    1002   |  01:00 | 02:00 |
|   101     |    1003   |  NULL  | NULL  |
+----------------------------------------+

没有
主题1003
。对于
Exam1、Exam2
列也是如此。他们从哪里来?对不起,我错过了学生表主体D最后一行的第一个表1003@asanraj . . . 不,没有。您应该编辑问题以显示实际数据。