MySQL: How to filter out groups that don't contain a specific value? -


i want filter out request_id's, belong sessions don't contain site_id 2. if user didn't visit site 2, session irrelevant me.

request_id   session_id   site_id 1            1            1 2            1            2 3            1            3 4            2            1 5            2            3 6            2            3 

result:

request_id   session_id   site_id 1            1            1 2            1            2 3            1            3 

right know think of (didn't check if working):

select session_id, group_concat(site_id order request_id asc separator ', ') site_ids requests group session_id having site_id ('% 2, %' or '2, %') order session_id asc; 

but need related session_ids not aggregated in 1 cell. possible avoid group session_id generates output?

do have better , more efficient solutions?

i think might need use sub-select achieve desired outcome.

select request_id, session_id, site_id requests session_id in (   select distinct session_id requests site_id=2) order session_id asc; 

or join

select a.request_id, a.session_id, a.site_id requests right join requests b on    a.session_id = b.session_id , b.site_id=2 group a.session_id order a.session_id asc; 

Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -