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

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -