예약이 한 테이블 (workshop_reservation)의 레코드로 저장되고 세션 (예약되는 것)이 다른 테이블 (세션)에 저장되는 시스템이 있습니다. 각 예약은 세션에 속하며 각 세션은 워크샵에 속합니다.카운트를 사용하는 SQL 하위 쿼리를 사용하는 방법
특정 워크샵에 속한 각 세션의 예약 수를 찾는 mysql 쿼리를 만들고 싶습니다.
SELECT count(r.id)
FROM workshop_reservation AS `r`
WHERE r.session_id = #
내가 수행하는 방법을 파악하려는 : (# 세션 번호입니다) 나는 주어진 세션에서 예약의 수를 찾을 수를()를 사용하려고했다,이 쿼리는 그 목적을 위해 잘 작동 모든 세션에 대한이 쿼리. 나는 쉽게 다음 쿼리를 사용하여 모든 SESSION_ID을 찾을 수 있습니다 세션 중 하나를 더 예약이 없을 때, 어떤 행이 해당 세션에 대한 인쇄하지 않기 때문에
SELECT s.id
FROM session AS `s`
내 문제는, 이러한 결합된다. 대신 예약이없는 세션의 수 열에 0을 인쇄하려고합니다. 다음 쿼리는 하나 이상의 예약이있는 세션에서 제대로 작동하지만 예약이없는 세션은 무시합니다 (0을 나타내는 행을 인쇄하지 않음).
SELECT count(r.id) , r.session_id
FROM workshop_reservation AS `r`
WHERE r.session_id
IN (
SELECT s.id
FROM session AS `s`
WHERE s.workshop_id =1
)
AND r.reservation_status_id =0
GROUP BY r.session_id
이 상황에서 어떻게 0으로 행을 인쇄 할 수 있습니까?
죄송 스캇, 당신은'HAVING' 대신 무엇을 사용하는 경우 ... 그 사실 내 부분에 오타라고 생각? 문제는 '어디서'는 'COUNT'와 (과) 함께 작동하지 않는다는 것입니다. – nico
AND 대신 HAVING을 사용하면 구문 오류가 발생합니다. 나는 네가 무슨 뜻인지 잘 모르겠다. where를 사용하면 reservation_status_id에 관계없이 계산중인 세션에 대한 모든 예약이 생성됩니다. – scott77777
죄송합니다, 내가 'HAVING'에 대해 말한 것을 잊어 버리십시오. 실제로 사실이 아니며 올바르게 기억하지 못했습니다. WHERE/AND 문제에 관해서는, 나는 정말로 확신하지 못합니다. – nico