我有4张桌子(牛,农场,疫苗,vReminder) 我想从Vaccine Reminder表中选择所有提醒显示为
(2(奶牛)在此日期(农场名称1)有(疫苗名称1)) (3)(马)在此日期(农场名1)有(疫苗名1) (1)(牛)在此日期(农场名称2)有(疫苗名称5),依此类推。
我写了这个查询但是如果牛是同一类型的话,它不会对同一个农场的同一疫苗类型进行分组:
我的查询:
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 Pinkeye它不会将它们归为一组。
答案 0 :(得分:0)
我正在通过RFID对牛群进行分组的问题阻止群体功能收集相同的疫苗ID,所以正确的查询是:
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
答案 1 :(得分:0)
不要使用子查询来获取疫苗名称。只需使用连接:
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;