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
Post a Comment