首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Group BY的复杂SQL查询

Group BY的复杂SQL查询
EN

Stack Overflow用户
提问于 2016-07-10 01:59:10
回答 2查看 45关注 0票数 0

我有4个表(牛,农场,疫苗,vReminder ),我想从疫苗提示表中选择所有提醒显示为

(2(牛)在此日期有(疫苗名称1) from (农场名称1) (3(马)在此日期有(疫苗名称1) from (农场名称1) )(1(牛)在此日期有(疫苗名称5) from (农场名称2),依此类推)

我写了这个查询,但如果牛属于相同的类型,它不会将位于同一农场的相同的疫苗类型分组:

我的问题是:

代码语言:javascript
复制
  SELECT 
  (Select v.vName from vaccine as v where v.vID= vr.[vID]),
  vr.[Type],
  vsD,
  COUNT(vr.[Type]),
  f.farmName
  FROM [QNFARM].[dbo].[vReminder] as vr  inner join
       [cattle] as c on c.RFID = vr.RFID inner join
       farm as f on f.farmID = c.fID    
  Group by
  vr.vID,
  vr.Type,
  vsD,
  vr.RFID,
  f.farmName

但正如你在屏幕截图中看到的,它是Vname红眼,用于相同的品种,相同的日期和相同的农场,它没有对它们进行分组。

EN

回答 2

Stack Overflow用户

发布于 2016-07-10 02:26:57

我也是通过牛的RFID进行分组的问题,这阻止了组功能收集相同的疫苗id,所以正确的查询是:

代码语言:javascript
复制
  SELECT f.farmName,vr.[Type],
  (Select v.vName from vaccine as v where v.vID= vr.[vID]) as vName,vr.vsD
  ,COUNT(*) as Num
  FROM [QNFARM].[dbo].[vReminder] as vr inner join  [cattle] as c on c.RFID=vr.RFID  inner join farm as f on f.farmID=c.fID    Group by f.farmName,vr.Type,vr.vID,vr.vsD

现在,我从group by语句和结果中删除了RFID

票数 0
EN

Stack Overflow用户

发布于 2016-07-10 02:44:57

不要使用子查询来获取疫苗名称。只需使用joins:

代码语言:javascript
复制
SELECT v.vName, vr.[Type], vsD, COUNT(*), f.farmName
FROM [QNFARM].[dbo].[vReminder] vr INNER JOIN
     [cattle] c 
     ON c.RFID = vr.RFID  INNER JOIN 
     farm f 
     ON f.farmID = c.fID INNER JOIN
     vaccine v
     ON v.vid = vr.vid
GROUP BY v.vname, vr.Type, vsD, f.farmName;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38284718

复制
相关文章

相似问题

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