За последние 24 часа нас посетили 18907 программистов и 1710 роботов. Сейчас ищут 894 программиста ...

В результах запроса не должно быть повторений

Тема в разделе "MySQL", создана пользователем Goofman, 30 июн 2010.

  1. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Нужно сделать то же, что на этом форуме называется "Найти ваши сообщения"

    В существующем виде форум выводит все сообщения пользователя p.poster_id=$value по несколько раз, даже если они повторяются в одной теме. Нужно, чтобы функция выводила топик пользователя только один раз.

    Какую функцию использовать вместо INNER JOIN или WHERE?

    PHP:
    1. <?  case 'show_user_posts':
    2.             $query = array(
    3.                 'SELECT'    => 'p.id AS pid, p.poster AS pposter, p.posted AS pposted, p.poster_id, p.message, p.hide_smilies, t.id AS tid, t.poster, t.subject, t.first_post_id, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies,  t.num_views, t.forum_id, f.forum_name',
    4.                 'FROM'      => 'posts AS p',
    5.                 'JOINS'     =>
    6.                     array(
    7.                     array(
    8.                         'INNER JOIN'    => 'topics AS t',
    9.                         'ON'            => 't.id=p.topic_id'
    10.                     ),
    11.                     array(
    12.                         'INNER JOIN'    => 'forums AS f',
    13.                         'ON'            => 'f.id=t.forum_id'
    14.                     ),
    15.                     array(
    16.                         'LEFT JOIN'     => 'forum_perms AS fp',
    17.                         'ON'            => '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')'
    18.                     )
    19.                 ),
    20.                 'WHERE'     => '(fp.read_forum IS NULL OR fp.read_forum=1) AND p.poster_id='.$value,
    21.                 'ORDER BY'  => 'pposted DESC'
    22.             );
    PS: Сорьте, я малограмотный.
     
  2. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Ну хоть наметки какие...
     
  3. platitude

    platitude Активный пользователь

    С нами с:
    30 июн 2010
    Сообщения:
    33
    Симпатии:
    0
  4. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Да, да, очень похоже, но я не знаю, как применить к текущему выражению...
    По-моему DISTINCT должно относится только к p.id (ID поста). Остальные колонки это тема, автор, число просмотров и пр...
     
  5. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Ну что, никто не хочет выполнять за дурака его мыслительную работу?
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    дурак уже попробовал то, что ему предложили?
     
  7. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Здесь еще чего-то важного недопонято. Просто в лоб SELECT DISTINCT не работает.