[英]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.