mysql left join count

Discussion in 'PHP' started by OdaN, 9 Nov 2010.

  1. OdaN

    OdaN Elder - Старейшина

    Joined:
    4 Mar 2006
    Messages:
    192
    Likes Received:
    17
    Reputations:
    1
    Помогите пожалуйста с запросом. Есть две таблицы. Одна с пользователями, другая с сообщениями форума. Мне нужно вывести кой-какую инфу о пользователе, и в крайнем столбце количество сообщений за последние сутки.

    Code:
    select 
    phpbb_users.user_id as id,
    phpbb_users.username as name,
    phpbb_users.user_type as type,
    phpbb_users.user_lastvisit as visit,
    phpbb_users.user_lastpost_time as post,
    count(phpbb_posts.poster_id) as todaypostcount
    from phpbb_users
    left join phpbb_posts
    on phpbb_users.user_id=phpbb_posts.poster_id
    where user_type != 1 and user_type != 2
    [COLOR=Red]and phpbb_posts.post_time > (1289308984-86400)[/COLOR]
    group by phpbb_users.user_id
    order by user_id
    если в запросе есть условие, выделенное выше крастным, он выводит только тех пользователей, у которых за эти сутки сообщения есть. А нужно вывести всех, но у кого таких постов нету, соответственно просто поставить нолик. UNION использовать не хочу, хотя-бы из-за того что запрос станет совсем большим. Возможно-ли как-то это решить?
     
  2. OdaN

    OdaN Elder - Старейшина

    Joined:
    4 Mar 2006
    Messages:
    192
    Likes Received:
    17
    Reputations:
    1
    если кому-то понадобиться:

    Code:
    select 
    phpbb_users.user_id as id,
    phpbb_users.username as name,
    phpbb_users.user_type as type,
    phpbb_users.user_lastvisit as visit,
    phpbb_users.user_lastpost_time as post,
    count(phpbb_posts.poster_id) as todaypostcount
    from phpbb_users
    left join (select * from phpbb_posts where phpbb_posts.post_time > (1289308984-86400))phpbb_posts 
    on phpbb_users.user_id=phpbb_posts.poster_id
    where user_type != 1 and user_type != 2
    group by phpbb_users.user_id
    order by todaypostcount desc
     
Loading...