ExpressionEngine CMS
Open, Free, Amazing

Thread

This is an archived forum and the content is probably no longer relevant, but is provided here for posterity.

The active forums are here.

Complex SQL query problem

April 24, 2011 1:35pm

Subscribe [1]
  • #1 / Apr 24, 2011 1:35pm

    jamestowers

    53 posts

    I’m running this pretty complicated query to generate a table of user info on the site, but for some reason not all members are being displayed.

    SELECT DISTINCT 
                            exp_members.member_id,
                            exp_member_data.m_field_id_1, 
                            email, 
                            username, 
                            group_title, 
                            join_date, 
                            last_visit, 
                            exp_member_data.m_field_id_5,
                            exp_channel_titles.author_id, 
                            (SELECT COUNT(exp_channel_titles.title) FROM exp_channel_titles WHERE channel_id = 2 AND exp_channel_titles.author_id = exp_members.member_id) as campaign_count, 
                            (SELECT COUNT(exp_channel_titles.title) FROM exp_channel_titles INNER JOIN exp_channel_data ON exp_channel_titles.entry_id=exp_channel_data.entry_id WHERE exp_channel_titles.channel_id = 2 AND exp_channel_titles.author_id = exp_members.member_id AND field_id_26 = 'active') as campaign_count_active,
                            (SELECT COUNT(exp_channel_titles.title) FROM exp_channel_titles INNER JOIN exp_channel_data ON exp_channel_titles.entry_id=exp_channel_data.entry_id WHERE exp_channel_titles.channel_id = 2 AND exp_channel_titles.author_id = exp_members.member_id AND field_id_26 = 'inactive') as campaign_count_inactive
                            FROM exp_member_data 
                            INNER JOIN exp_members ON exp_member_data.member_id=exp_members.member_id 
                            INNER JOIN exp_channel_titles ON exp_members.member_id=exp_channel_titles.author_id
                            INNER JOIN exp_member_groups ON exp_members.group_id=exp_member_groups.group_id

    If I remove these parts relating to the channel entries it works OK:

    exp_channel_titles.author_id, 
                            (SELECT COUNT(exp_channel_titles.title) FROM exp_channel_titles WHERE channel_id = 2 AND exp_channel_titles.author_id = exp_members.member_id) as campaign_count, 
                            (SELECT COUNT(exp_channel_titles.title) FROM exp_channel_titles INNER JOIN exp_channel_data ON exp_channel_titles.entry_id=exp_channel_data.entry_id WHERE exp_channel_titles.channel_id = 2 AND exp_channel_titles.author_id = exp_members.member_id AND field_id_26 = 'active') as campaign_count_active,
                            (SELECT COUNT(exp_channel_titles.title) FROM exp_channel_titles INNER JOIN exp_channel_data ON exp_channel_titles.entry_id=exp_channel_data.entry_id WHERE exp_channel_titles.channel_id = 2 AND exp_channel_titles.author_id = exp_members.member_id AND field_id_26 = 'inactive') as campaign_count_inactive
    INNER JOIN exp_channel_titles ON exp_members.member_id=exp_channel_titles.author_id

    Can anyone see anything obvious that might be filtering some info out?

  • #2 / Apr 25, 2011 7:47am

    jamestowers

    53 posts

    Ignore me, I just needed to remove the

    INNER JOIN exp_channel_titles ON exp_members.member_id=exp_channel_titles.author_id

    and

    exp_channel_titles.author_id,

    as I was already querying for them in the SELECT COUNTs

.(JavaScript must be enabled to view this email address)

ExpressionEngine News!

#eecms, #events, #releases