database - problem minus in mysql in subtratcting group data -
i have 3 table member (memberid,m_name,statusid,address,dob,phone) booking (bookingid, memberid ,sessionid, cost) session(sessionid, activity,location)
(fk memberid, fk sessionid )booking link ( member pk )and (session pk)
session activity football,swimming,badminton,tennis want run following query
find name of member have booked session 'football', not session 'swimming' during december 2009
sql
select distinct event1.m_name ,event1.activity ( select mm.m_name,ss.activity,ss.sessionid,ss.s_date member mm inner join booking bb on bb.memberid = mm.memberid inner join session ss on ss.sessionid = bb.sessionid activity = 'football' )as event1 inner join ( select mm.m_name ,ss.activity,ss.sessionid,ss.s_date member mm inner join booking bb on bb.memberid = mm.memberid inner join session ss on ss.sessionid = bb.sessionid mm.memberid not in ( select mm.memberid member mm inner join booking bb on bb.bookingid = mm.memberid inner join session ss on bb.sessionid = ss.sessionid ss.activity in ( 'swimming') ) ) event2 on event1.sessionid = event2.sessionid
what im doing wrong return me memeber have book football , swmming.
select m_name members memberid in ( select b.memberid booking b join session s on s.sessionid = b.sessionid s.activity = "football" ) , memberid not in ( select b.memberid booking b join session s on s.sessionid = b.sessionid s.activity = "swimming" )
or
select m.m_name members m exists ( select 0 booking b join session s on s.sessionid = b.sessionid s.activity = "football" , b.memberid = m.memberid ) , not exists ( select 0 booking b join session s on s.sessionid = b.sessionid s.activity = "swimming" , b.memberid = m.memberid )
or
select m.m_name booking b join members m on m.memberid = b.memberid join session s on s.sessionid = b.sessionid s.activity in ("football", "swimming") group b.memberid having count(s.activity = "swimming") = 0
Comments
Post a Comment