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 编写包含多个WHERE子句的更好方法<&燃气轮机;来自同一对象的条件_Sql_Excel_Openedge_Progress Db - Fatal编程技术网

Sql 编写包含多个WHERE子句的更好方法<&燃气轮机;来自同一对象的条件

Sql 编写包含多个WHERE子句的更好方法<&燃气轮机;来自同一对象的条件,sql,excel,openedge,progress-db,Sql,Excel,Openedge,Progress Db,我已经创建了一个语句来返回附加到订单的组件的尺寸。我遇到的问题是,查询返回订单上与我无关的所有组件,例如交货和包装。总共有超过45个我不感兴趣的组件。为了排除这些,我将所有我不想看到的内容都放在那里WHERE子句中。我的问题是,我觉得这不是我处理多个和列表的最佳方式 为了省去麻烦,我把主查询放在下面,并且只放了where子句的一部分 SELECT Job_0.JobJobNumber AS 'Job Number' ,Job_0.JobEstimateNumber AS 'Estimate N

我已经创建了一个语句来返回附加到订单的组件的尺寸。我遇到的问题是,查询返回订单上与我无关的所有组件,例如交货和包装。总共有超过45个我不感兴趣的组件。为了排除这些,我将所有我不想看到的内容都放在那里
WHERE
子句中。我的问题是,我觉得这不是我处理多个
列表的最佳方式

为了省去麻烦,我把主查询放在下面,并且只放了where子句的一部分

SELECT

Job_0.JobJobNumber AS 'Job Number'
,Job_0.JobEstimateNumber AS 'Estimate Number'
,Component_0.CooComponentDescription AS 'Component'
,Component_0.CooMfsDescription AS 'Finished Size'
,Component_0.CooDownSize AS 'Down Size'
,Component_0.CooAcrossSize AS 'Across Size'
,Component_0.CooDownFactor AS 'Down Gap'
,Component_0.CooAcrossFactor AS 'Across Gap'
,MasterWorkingSize_0.MwsDescription AS 'Working Size'
,MasterWorkingSize_0.MwsMinimumWidth AS 'Width'
,MasterWorkingSize_0.MwsMinimumLength AS 'Length'

FROM
SBS.PUB.Job Job_0
JOIN SBS.PUB.Component Component_0 ON Job_0.JobID = Component_0.JobID
JOIN SBS.PUB.WorkingSize Workingsize_0 ON Job_0.JobID = WorkingSize_0.JobID
JOIN SBS.PUB.MasterWorkingSize MasterWorkingSize_0 ON WorkingSize_0.MasterworkingsizeID = MasterWorkingSize_0.MasterworkingsizeID

WHERE

Job_0.JobID > 254677392
AND Component_0.CooComponentDescription <> 'Packing'
AND Component_0.CooComponentDescription <> 'Delivery'
AND Component_0.CooComponentDescription <> Packing in 1,000s
AND Component_0.CooComponentDescription <> Finish Pad of Sets
AND Component_0.CooComponentDescription <> Part Outsourced
AND Component_0.CooComponentDescription <> Finishing Booklets
AND Component_0.CooComponentDescription <> Packing - band in 50s
AND Component_0.CooComponentDescription <> Small Job Uplift £10
AND Component_0.CooComponentDescription <> Packing band in 50s
选择
Job_0.jobNumber作为“Job Number”
,Job_0.JobEstimateNumber作为“估计数”
,Component_0.CooComponentDescription为'Component'
,组件_0.coomfsd描述为“成品尺寸”
,组件_0.0缩小为“缩小尺寸”
,组件_0.coossSize为“跨尺寸”
,分量_0.0下降系数为“下降间隙”
,组件_0.coAcrossFactor为“跨间隙”
,MasterWorkingSize_0.mWs描述为“工作尺寸”
,主加工尺寸\u 0.MwsMinimumWidth作为“宽度”
,MasterWorkingSize_0.MwsMinimumLength作为“长度”
从…起
SBS.PUB.Job_0
在Job_0.JobID=Component_0.JobID上加入SBS.PUB.Component组件_0
加入作业上的SBS.PUB.WorkingSize WorkingSize\u 0.JobID=WorkingSize\u 0.JobID
加入SBS.PUB.MasterWorkingSize MasterWorkingSize\u 0 ON WorkingSize\u 0.MasterworkingsizeID=MasterWorkingSize\u 0.MasterworkingsizeID
哪里
Job_0.JobID>254677392
和组件_0.coomponentDescription“包装”
和组件_0.coComponentDescription“交货”
和组件_0.coomponentdescription封装在1000秒内
和组件_0.coomponentDescription成套抛光垫
和组件_0.coComponentDescription零件外包
和组件_0.coomponentDescription整理手册
和组件_0.coomponentDescription包装-50秒带
和组件_0.coomponentdescription小型工作提升10英镑
和组件_0.coomponentDescription 50秒包装带

我在想,除了上面我所做的以外,还有没有更好的方法可以把它们嵌套起来?就像您在
情况下执行
语句一样。我希望看到的是类似于
和Component\u 0.cocomponentdescription('Packing','Delivery',Packing in 1000s等)
您似乎希望
不在
中:

Component_0.CooComponentDescription not in ('Packing', 'Delivery', 'Packing in 1,000s', etc, etc)

您似乎希望
不在
中:

Component_0.CooComponentDescription not in ('Packing', 'Delivery', 'Packing in 1,000s', etc, etc)

我将使用的方法是创建一个包含列的新表,列出您的排除项,然后使用:


    SELECT columns
       FROM SBS.PUB.Job Job_0
       JOIN SBS.PUB.Component Component_0 ON Job_0.JobID = Component_0.JobID
       LEFT JOIN ExcludeComponent exc ON exc.CooComponentDescription = Component_0.CooComponentDescription
       WHERE exc.CooComponentDescription IS NULL


然后用包含45项的列表填充
ExcludeComponent.CooComponentDescription1
。这里的优点是,这比将所有术语放入查询中更具动态性。

我将使用的方法是创建一个新表,其中包含列出排除项的列,然后使用:


    SELECT columns
       FROM SBS.PUB.Job Job_0
       JOIN SBS.PUB.Component Component_0 ON Job_0.JobID = Component_0.JobID
       LEFT JOIN ExcludeComponent exc ON exc.CooComponentDescription = Component_0.CooComponentDescription
       WHERE exc.CooComponentDescription IS NULL

然后用包含45项的列表填充
ExcludeComponent.CooComponentDescription1
。这里的优点是,这比将所有术语放入查询中更具动态性