首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特定数据查询

特定数据查询
EN

Stack Overflow用户
提问于 2018-03-31 03:02:04
回答 1查看 42关注 0票数 0

链接到以前的线程链接的Oracle - runtime and show data based on inserted year ( not duplicate )

摘要

基于上面的链接,我继续编写我想要的更具体的结果,在使用"WHERE“语句显示特定数据的代码过程中遇到了一些问题。

基于Mr.Barboros提供的工作代码,我想添加一些查询,只显示某个位置,例如,

我有查询2016,它应该只显示2个结果

代码语言:javascript
复制
FACILITYNAME COUNT_TIMES    MONTHS
Science Lab     1             4
Science Lab     1             5

但它总是显示出额外的位置,即生物学,即使在2016年,数据库中也没有插入生物。-如果我用"OR“添加了更多的位置,它仍然会继续显示结果,下面是我的查询代码。

代码语言:javascript
复制
SELECT f.FACILITYNAME,COUNT(*) AS count_times, EXTRACT (MONTH FROM b.Timebooked ) AS MONTHS
FROM BookingTable b
JOIN FacilityTable f ON b.FACILITYNO = f.FACILITYNO
WHERE TO_CHAR(b.Timebooked , 'YYYY') = 2018
AND f.FACILITYNAME = 'Toilet' OR f.FACILITYNAME = 'Science Lab' OR  f.FACILITYNAME = 'Biology Lab'
GROUP BY (EXTRACT (MONTH FROM b.Timebooked )),f.FACILITYNAME
ORDER BY (EXTRACT (MONTH FROM b.Timebooked ));

http://sqlfiddle.com/#!4/13a6a/9

我想要的结果是,当我进入任何一年,只展示厕所,科学实验室生物实验室

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-31 03:15:22

需要在'OR‘条件组周围添加'()’。没有括号,AND将优先于OR。请参阅SQL Logic Operator Precedence

试试这个:

代码语言:javascript
复制
SELECT f.FACILITYNAME,COUNT(*) AS count_times, EXTRACT (MONTH FROM b.Timebooked ) AS MONTHS
FROM BookingTable b
JOIN FacilityTable f ON b.FACILITYNO = f.FACILITYNO
WHERE TO_CHAR(b.Timebooked , 'YYYY') = 2018
AND (f.FACILITYNAME = 'Toilet' OR f.FACILITYNAME = 'Science Lab' OR  f.FACILITYNAME = 'Biology Lab')
GROUP BY (EXTRACT (MONTH FROM b.Timebooked )),f.FACILITYNAME
ORDER BY (EXTRACT (MONTH FROM b.Timebooked ));

如果没有括号,您的查询实际上就是这样做的(这是不正确的):

代码语言:javascript
复制
SELECT f.FACILITYNAME,COUNT(*) AS count_times, EXTRACT (MONTH FROM b.Timebooked ) AS MONTHS
FROM BookingTable b
JOIN FacilityTable f ON b.FACILITYNO = f.FACILITYNO
WHERE ( TO_CHAR(b.Timebooked , 'YYYY') = 2018
AND  f.FACILITYNAME = 'Toilet') OR f.FACILITYNAME = 'Science Lab' OR  f.FACILITYNAME = 'Biology Lab' 
GROUP BY (EXTRACT (MONTH FROM b.Timebooked )),f.FACILITYNAME
ORDER BY (EXTRACT (MONTH FROM b.Timebooked ));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49583807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档