查询根据关联表中的row_count返回结果?

时间:2010-12-09 03:39:18

标签: sql mysql join count

我有两个表:Match和MatchShots。

匹配有很多match_shots,match_shots属于匹配。

在我的匹配表中,我有一个名为shot_limit的属性。

我想根据以下条件返回这些匹配项:

  • 匹配shot_limit不为空
  • 匹配shot_limit = 1和match_shots的数量> 0
  • 匹配shot_limit = 3和match_shots的数量> 2

2 个答案:

答案 0 :(得分:0)

如下:

select 
  m.* 
from 
  match m 
  inner join 
  matchshot ms 
    on ms.id = m.ms_id 
where 
  m.shot_limit is not null 
group by 
  m.id 
having 
  (m.shot_limit = 1 and count(*) > 0) or 
  (m.shot_limit = 3 and count(*) > 2) 

答案 1 :(得分:0)

要了解每个“匹配”如何量化不同的分类,我会将计数添加为结果集中的列。

select 
      m.matchID, 
      {whatever other columns},
      count(*) MatchCount
   from  
      match m,
      matchShots ms
   where 
          m.matchID = ms.MatchID
      and ( m.shot_Limit = 1 or m.shot_Limit = 3)
   group by
      m.matchID
   having 
      MatchCount >= m.Shot_Limit