首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回列的所有值为false的Postgresql查询

返回列的所有值为false的Postgresql查询
EN

Stack Overflow用户
提问于 2013-12-28 07:00:03
回答 2查看 192关注 0票数 0

我有一张供工作和投标的桌子。每项工作都有许多标书。有一个出价列"is_selected“是一个布尔值。只有一个出价可以是is_selected=true的一个工作。

我的问题是,我想返回的就业人数,所有的出价都是is_selected=false。

例如,

代码语言:javascript
复制
Job 1 has bids a=true, b=false, c=false, d=false 
Job 2 has bids a=false, b=false, c=false
Job 3 has bids a=false, b=false
Job 4 has no bids

该查询的结果应该返回一个包含3个作业的查询(只有作业1选择了投标人;因此它应该返回作业2、3、4)。

如何在postgresql或ActiveRecord/Rails中做到这一点?

用数据结构更新:

3张表

事件(has_many作业)

作业(has_many出价,belongs_to事件)

  • event_id (整数)

投标(belongs_to作业)

  • job_id (整数)
  • is_selected (布尔型)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-28 18:58:37

这里有一种在ruby中实现的方法--不像在数据库中那样高效。

代码语言:javascript
复制
all_jobs = Job.includes(:bids)
logger.debug "ALL JOBS: #{all_jobs.length}"

jobs = all_jobs.reject { |job| job.bids.detect(&:is_selected) }
logger.debug "UNSELECTED JOBS #{jobs.length}"
票数 1
EN

Stack Overflow用户

发布于 2013-12-29 06:52:26

这应该作为一个纯SQL解决方案使用:

代码语言:javascript
复制
select count(1) 
from jobs 
where id not in (select distinct job_id from bids where is_selected=true)

假设你只想知道没有出价的工作总数。如果需要作业的详细信息,可以替换select子句的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20811961

复制
相关文章

相似问题

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