簡體   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