(MySql) Запрос в 2 таблицы

Discussion in 'PHP' started by Fantom3D, 14 Aug 2010.

  1. Fantom3D

    Fantom3D New Member

    Joined:
    23 Aug 2009
    Messages:
    71
    Likes Received:
    2
    Reputations:
    -1
    Есть запрос:

    PHP:
    SELECT phpbb_topics.topic_idphpbb_topics.forum_idphpbb_topics.topic_title
    phpbb_topics.topic_posterphpbb_topics.topic_first_poster_name
    phpbb_topics.topic_timephpbb_topics.topic_last_post_timephpbb_topics.topic_last_post_id
    phpbb_topics.topic_last_poster_namephpbb_topics.topic_last_poster_id
    phpbb_topics.topic_viewsphpbb_topics.topic_replies
     FROM phpbb_topics WHERE topic_approved 

    ORDER BY phpbb_topics
    .topic_last_post_time DESC LIMIT 10

    Нужно в этот же запрос добавить вывод из таблицы users поля group, где:
    PHP:
    phpbb_topics.topic_last_poster_name users.name
    В мускуле не настолько силен. Помогите :confused:
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Fantom3D по SQL есть прикрепленная тема, в следующий раз пишите в нее.

    Code:
    SELECT a.topic_id, a.forum_id, ...тут остальные столбцы..., b.group FROM phpbb_topics LEFT JOIN users ON a.topic_last_poster_name=b.name WHERE topic_approved = 1 
    ORDER BY a.topic_last_post_time DESC LIMIT 10
     
    _________________________
  3. Fantom3D

    Fantom3D New Member

    Joined:
    23 Aug 2009
    Messages:
    71
    Likes Received:
    2
    Reputations:
    -1
    Спасибо, я так уже пробовал, но не работает... пишет:

    PHP:
    Warningmysql_fetch_array(): supplied argument is not a valid MySQL result resource in G:\Programs\VertrigoServ\www\3\blocks\block-forum.php on line 13

    Вот код запроса:

    PHP:
    SELECT phpbb_topics.topic_idphpbb_topics.forum_idphpbb_topics.topic_titlephpbb_topics.topic_posterphpbb_topics.topic_first_poster_namephpbb_topics.topic_timephpbb_topics.topic_last_post_timephpbb_topics.topic_last_post_idphpbb_topics.topic_last_poster_namephpbb_topics.topic_last_poster_idphpbb_topics.topic_viewsphpbb_topics.topic_repliesusers.group FROM phpbb_topics LEFT JOIN users ON phpbb_topics.topic_last_poster_name users.name WHERE topic_approved 1 ORDER BY phpbb_topics.topic_last_post_time DESC LIMIT 10

    В чем проблема? :confused: :confused: :confused:



    P.S Кстати, phpbb_topics.topic_last_poster_name и users.name содержат текст, может в этом беда?
     
    #3 Fantom3D, 21 Aug 2010
    Last edited: 21 Aug 2010
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Fantom3D Ваш текст ошибки не несет разъяснений что не правильно. Сразу после запроса к БД сделайте нормальный вывод ошибки:
    PHP:
    $query mysql_query("тратата проблемный запрос");
    if (!
    $query) echo mysql_errno().'=>'.mysql_error();
     
    _________________________
  5. Fantom3D

    Fantom3D New Member

    Joined:
    23 Aug 2009
    Messages:
    71
    Likes Received:
    2
    Reputations:
    -1
    Все оказалось достаточно просто, я неправильно указал название таблицы. :rolleyes: А так все работает. ;)

    P.S И последний вопрос, а из 3 таблиц возможно брать данные таким образом?
     
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Fantom3D Поэтому стоит выводить ошибку mysql с помощью вышеописанной конструкции - там было бы сразу написано, что таблицы к которой вы обращаетесь - не существует

    можно, не забывайте только проверять запросы с помощью EXPLAIN и устанавливать правильные индексы
     
    _________________________