[Решено] join

Тема в разделе "Базы Данных", создана пользователем Savok32, 5 ноя 2015.

  1. Savok32

    Savok32

    Регистрация:
    18 дек 2012
    Сообщения:
    333
    Симпатии:
    51
    Добрый день.

    Есть 2 таблицы

    Сделал запрос который выводит данные из таблицы prefix_wall

    PHP:
    $result mysql_query("SELECT wall_user_id, COUNT(wall_user_id)
    FROM prefix_wall
    GROUP BY wall_user_id"
    );

    while (
    $row mysql_fetch_array($resultMYSQL_NUM)) {
        
    printf("Пользователи %s - Очки: %s %s"$row[0], $row[1], $row[2]."<br>" );
    }
    Выводи таким образом
    Вопрос как сделать, чтобы вместо id 2,id 119 ,id 139 брались данные из второй таблицы prefix_user и вместо id вставляли user_profile_name (Ф.И.О)

    Чтобы получилось так:
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    Код:
    SELECT pu.user_profile_name, COUNT(pw.wall_user_id)
    FROM prefix_wall AS pw
    LEFT JOIN prefix_user AS pu ON (pu.user_id = pw.wall_user_id)
    GROUP BY pw.wall_user_id
    С Сортировкой:
    Код:
    SELECT pu.user_profile_name, COUNT(pw.wall_user_id) as cnt
    FROM prefix_wall AS pw
    LEFT JOIN prefix_user AS pu ON (pu.user_id = pw.wall_user_id)
    GROUP BY pw.wall_user_id
    ORDER BY cnt DESC
     
    Последнее редактирование: 5 ноя 2015
    Savok32 нравится это.
  3. Savok32

    Savok32

    Регистрация:
    18 дек 2012
    Сообщения:
    333
    Симпатии:
    51
    еще такой вопрос, как сделать, чтобы он выводил не всех пользователей, а только 5 первых записей.
     
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    Код:
    SELECT pu.user_profile_name, COUNT(pw.wall_user_id) as cnt
    FROM prefix_wall AS pw
    LEFT JOIN prefix_user AS pu ON (pu.user_id = pw.wall_user_id)
    GROUP BY pw.wall_user_id
    ORDER BY cnt DESC
    LIMIT 5
     
  5. Savok32

    Savok32

    Регистрация:
    18 дек 2012
    Сообщения:
    333
    Симпатии:
    51
    идем дальше, вообщем у меня получилось так...... всё работает
    нужно теперь сделать так, чтобы к ФИО юзера добавлялась его ссылка в профиль.
    тобишь ссылка вида такая должна быть <a href='http://int.юююю.ru/live/profile/СЮДА_ВСТАВИТЬ_ЛОГИН_БД'>

    В таблице prefix_user есть колонка user_login

    result = mysql_query("

    SELECT pu.user_profile_name, COUNT(pw.wall_user_id) as cnt
    FROM prefix_wall AS pw
    LEFT JOIN prefix_user AS pu ON (pu.user_id = pw.wall_user_id)
    GROUP BY pw.wall_user_id
    ORDER BY cnt DESC
    LIMIT 5


    ");

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("

    <table border=0 class=test widt=550>
    <tr>
    <td width=30> </td>
    <td width=350> <a href='http://int.юююю.ru/live/profile/СЮДА_ВСТАВИТЬ_ЛОГИН_БД'>%s</a> </td>
    <td width=100 > %s</td>
    </tr>
    </table>", $row[0], $row[1]."<br>" );
    }
    --- Добавлено, 10 ноя 2015 ---
    решил проблему

    $result = mysql_query("

    SELECT user_login, pu.user_profile_name, COUNT(pw.wall_user_id) as cnt
    FROM prefix_wall AS pw
    LEFT JOIN prefix_user AS pu ON (pu.user_id = pw.wall_user_id)
    GROUP BY pw.wall_user_id
    ORDER BY cnt DESC
    LIMIT 5


    ");

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("

    <table border=0 class=test widt=550>
    <tr>
    <td width=30> </td>
    <td width=350> <a href='http://int..ru/live/profile/%s'>%s</a> </td>
    <td width=100 > %s</td>
    </tr>
    </table>", $row[0], $row[1], $row[2]."<br>" );
    }