繁体   English   中英

mySQL问题分组并使用GROUP BY / HAVING返回正确的值

[英]mySQL -problem grouping and returning correct values using GROUP BY / HAVING

我有一个带有会议室,会议主题和时隙ID的crossReference表(crossref_room_subject)。 每个时隙有多个条目。 subjectCode表还包含一个subjectCodeCategory ID(每个主题仅一个类别,但每个类别多个)。 对于一个有效的查询,用户正在输入多个subjectCodes,我需要返回存在所有subjectCodes的时隙。 我现在使用GROUP BY和HAVING得到了很好的结果(再次感谢Sparky),但是在一个表中此查询所需的所有信息为:crossref_room_subject。

最后一种情况是使用更多变量,但无法正常工作。 这次用户输入多个subjectCodeCategorys。 我必须链接到subjectCodes表,以将subjectCodeCategory与subjectCode交叉引用。 我已经尝试了很多方法,主要是更改SELECT和/或GROUP BY,这似乎是我应该能够对这些subjectCodeCategories进行分组的地方。 但它不起作用(请参阅下文)。 我每有3个退货的timeSlot都会得到退货-很好,除了它仅计入subjectCode,而与subjectCodeCategory无关。 我只需要返回代表三个subjectCodeCategories中的每一个(或多个)的那些时隙。 我尝试将subjectCodeCategory添加到SELECT和/或GROUP BY子句中,但是没有得到更好的结果。

感谢您的任何帮助或提前的想法。 灰色

从crossref_room_subject a中选择a.meetingID,a.timeSlot a,subjectCodes b,其中a.subjectID = b.subjectID AND((b.subjectCodeCategory = 8或b.subjectCodeCategory = 19或b.subjectCodeCategory = 23)GROUP BY a.meetingID,a。时隙HAVING COUNT(*)= 3 LIMIT 0,30

我想到了。 这给出了我需要的结果:

SELECT a.meetingID, a.timeSlot 
FROM crossref_room_subject a , subjectCodes b 
WHERE a.subjectID = b.subjectID 
AND ( b.subjectCodeCategory =8 OR b.subjectCodeCategory =19 OR b.subjectCodeCategory =23 ) 
GROUP BY a.meetingID, a.timeSlot 
HAVING COUNT( DISTINCT b.subjectCodeCategory ) =3 LIMIT 0 , 30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM