从多个内部联接获取数据

顺风

我有下表。

表:PollingBooth PBId是主键。

PBID  | PBName |pdivID      
-----------------------
1     | Jaya PB | 1

2     | SP PB   | 1

表:PollingDivision-pdID是主键。

----------------

pdID  |pdName
------------------
1     | Homagama 

2     | Maharagama  

表格:ElectionOfficial -EoId是主键。

----------------
EoID   |EoName
---------------
1      | Sam

2      | Ram

3      | Feston

表格:ElectelecID是主键。

--------------------------------------
elecID    | ElecName
--------------------------------------
1         | Presidential Election 2013

2         | General Election 2014

表格:PollingBoothElection-pbID和elecID列均构成主键

--------------------------------
pbID   | elecID |numofEOs
--------------------------------
1      | 1      | 2

2      | 1      | 3

表:PollingBoothElectionOfficial。所有三列组合在一起构成一个主键。

----------------------------------

pbID   | elecID   | eOfficialID 
----------------------------------

1      | 1        |1

1      | 1        |2

我想选择一个特定PollingDivision的所有PollingBooth名称,其中特定选举中每个PollingBooth的eoID数量少于特定选举所允许的选举官员人数。

换句话说,我想选择所有PollingBooth名称,其中给定pbID和elecID的PollingBoothElectionofficial表中所有eOfficialID的计数都小于相同eleID和pbID的PollingBoothElection的EOs值,我想这样做特定PollingDivision的所有投票站。

这是我尝试过的。

   SELECT PB.PBName, COUNT(PBEO.eOfficialID)
   FROM PollingBoothElection PBE
   INNER JOIN PollingBooth PB ON PBE.pbID=PB.PBID
   INNER JOIN PollingDivision PD ON PB.pdivID=PD.pdID
   INNER JOIN PollingBoothElectionOfficial PBEO ON PBE.elecID=PBEO.elecID 
   AND PBE.pbID=PBEO.pboothID
   WHERE PBE.elecID=1 AND PD.pdName='Homagama' AND PBE.numOfEO>(SELECT COUNT(PBEO.eOfficialID))
   GROUP BY PB.PBName; 

但这说我不能在where子句中包含聚合函数。因此,如何检查PollingBoothElectionOfficial表中特定选举的每个投票站的选举官员人数,不大于PollingBoothElection表中指定的允许选举官员人数。

有什么方法可以使用IF ELSE语句来实现?

任何帮助都会很棒。提前致谢。

普雷迪普

如错误所述,您不能使用aggregatefunction inwhere子句来过滤结果集。

将条件从Where clause移至Having Clause用于搜索agroup或an的条件aggregate

SELECT PB.PBName,
       Count(PBEO.eOfficialID)
FROM   PollingBoothElection PBE
       INNER JOIN PollingBooth PB
               ON PBE.pbID = PB.PBID
       INNER JOIN PollingDivision PD
               ON PB.pdivID = PD.pdID
       INNER JOIN PollingBoothElectionOfficial PBEO
               ON PBE.elecID = PBEO.elecID
                  AND PBE.pbID = PBEO.pboothID
WHERE  PBE.elecID = 1
       AND PD.pdName = 'Homagama'
GROUP  BY PB.PBName,PBE.numOfEO
HAVING Count(PBEO.eOfficialID) < PBE.numOfEO 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用内部联接获取单个值

来自分类Dev

SQL内部联接获取列中的所有数据

来自分类Dev

ZFcuser通过内部联接获取信息

来自分类Dev

Sails.js-使用多个联接获取对象(模型)

来自分类Dev

如何从SQL中的单个联接获取多个列名?

来自分类Dev

在Laravel Eloquent中使用联接获取多个记录

来自分类Dev

内部联接和内部联接获取之间有什么区别?,HQL

来自分类Dev

通过Django模型中的联接获取数据

来自分类Dev

使用MySQL中的联接获取所需的数据

来自分类Dev

如何使用内部联接获取“下一个列”值?

来自分类Dev

SQL查询-使用内部联接获取表中具有ID的多列总和

来自分类Dev

数据集中的多个表上的内部联接

来自分类Dev

在SQL中左联接获取

来自分类Dev

MYSQL通过联接获取SUM

来自分类Dev

在SQL中左联接获取

来自分类Dev

如何使用联接获取以下字段?

来自分类Dev

带条件的左联接获取失败

来自分类Dev

使用联接从多个表中获取数据

来自分类Dev

使用联接从多个表中获取数据

来自分类Dev

SQL联接多个表并获取数据

来自分类Dev

无法在 spring 数据 jpa 中使用内部连接获取子实体

来自分类Dev

MySQL查询以使用GROUP BY和独立行中的多个表联接获取最大值,最小值

来自分类Dev

通过三重内部联接获得正确的结果

来自分类Dev

MySQL多个内部联接

来自分类Dev

多个内部联接-MySQL

来自分类Dev

MySQL多个内部联接

来自分类Dev

SQL多个内部联接

来自分类Dev

MySQL-使用联接获取两个表上的两组数据之间的差异?

来自分类Dev

SQL内部联接多个表并搜索数据库