Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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中使用左外部联接筛选记录_Sql_Sql Server_Tsql - Fatal编程技术网

在sql中使用左外部联接筛选记录

在sql中使用左外部联接筛选记录,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在使用以下SQL左外部联接获取数据: SELECT resource_name, un_diary_apps.date_app_start, un_diary_apps.date_app_end FROM un_diary_resources LEFT OUTER JOIN un_diary_apps ON resource_sequence = un_diary_resources.sequence WHERE un_diary_apps.date_app_start BETWEE

我正在使用以下SQL左外部联接获取数据:

SELECT resource_name, un_diary_apps.date_app_start, un_diary_apps.date_app_end
FROM un_diary_resources
LEFT OUTER JOIN un_diary_apps
    ON resource_sequence = un_diary_resources.sequence
WHERE un_diary_apps.date_app_start BETWEEN '2014-09-24 00:00:00' AND '2014-09-24 23:59:59'
而出局的是


当我应用日期范围时,它会显示这些日期中的记录。我想要所有资源的名称,即使他们是否在这些日期范围内有约会。

每当您在
WHERE
子句中指定
左连接的右侧的值时(该值不是
NULL
),您必须消除所有的
NULL
值,它本质上成为一个
内部连接。

使用
子句代替
WHERE

select resource_name,un_diary_apps.date_app_start,un_diary_apps.date_app_end from un_diary_resources 
left outer join un_diary_apps 
on (resource_sequence = un_diary_resources.sequence
AND un_diary_apps.date_app_start BETWEEN '2014-09-24 00:00:00'
AND '2014-09-24 23:59:59')

Left join似乎是在结果集中始终获取所有
resource\u name
记录的正确策略,并且屏幕截图似乎在正确的轨道上。那么你的问题是什么?
SELECT r.resource_name, apps.date_app_start, apps.date_app_end
FROM un_diary_resources r
LEFT OUTER JOIN 
(
    SELECT a.resource_sequence, a.date_app_start, a.date_app_end 
    FROM un_diary_apps a
    WHERE a.date_app_start BETWEEN '2014-09-24 00:00:00' AND '2014-09-24 23:59:59'
) AS apps
ON r.sequence = apps.resource_sequence