За последние 24 часа нас посетили 17820 программистов и 1646 роботов. Сейчас ищет 861 программист ...

MySQL vs PHP: Сложный запрос с участием 3х таблиц

Тема в разделе "PHP и базы данных", создана пользователем xaocbozzz, 4 апр 2012.

  1. xaocbozzz

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

    С нами с:
    4 апр 2012
    Сообщения:
    19
    Симпатии:
    0
    MySQL vs PHP: Сложный запрос с участием 3х таблиц

    Вот, собственно, таблицы:

    Таблица: user
    | user_id | user_name |
    | 22 | ОЛЯ |
    | 23 | ОЛЕГ |
    | 24 | ВИКА |
    | 25 | АНТОН |

    Таблица: group
    | group_id | user_id |
    | 33 | 22 |
    | 33 | 23 |
    | 34 | 24 |
    | 35 | 25 |

    Таблица: groupname
    | group_id | group_name |
    | 33 | ГОСТЬ |
    | 34 | УЧАСТНИК |

    Есть имена пользователей (user_name в табл. user). Каждый из них входит в определенную группу (group_name в табл. groupname).
    Например, пользователи ОЛЯ и ОЛЕГ входят в группу ГОСТЬ, а ВИКА и АНТОН входят в группу УЧАСТНИК
    Как вытащить имя пользователей (user_name из табл. user) из определенной группы (group_name из табл. groupname).
    Проще говоря, как вытащить имена пользователей из группы ГОСТЬ?

    Я писал такой код:

    $query = "SELECT user.user_name FROM user INNER JOIN group ON group.user_id = user.user_id INNER JOIN groupname ON groupname.group_name = 'ГОСТЬ'";
    $result = mysql_query($query) or die(mysql_error());
    while ($row = mysql_fetch_array($result))
    {
    echo $row['user_name']."";
    }

    Но код, кажется, выводит имена всех пользователей, а не конкретно с группы ГОСТЬ
     
  2. patashnik

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

    С нами с:
    4 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Код (Text):
    1.  
    2. SELECT u.user_name
    3. FROM user u
    4. JOIN group g ON g.user_id = u.user_id
    5. WHERE g.group_id = 33
     
  3. Givan

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

    С нами с:
    31 авг 2011
    Сообщения:
    20
    Симпатии:
    1
    В запросе отсутсвует условие отбора (WHERE).
    объединение талиц не верно
    Думаю что так будет верно:
    Код (Text):
    1.  
    2.  
    3. $query = "SELECT user.user_name FROM user INNER JOIN group ON group.user_id = user.user_id INNER JOIN groupname ON groupname.group_id=group.group_id WHERE groupname.group_name = 'ГОСТЬ'";
    4. $result = mysql_query($query) or die(mysql_error());
    5. while ($row = mysql_fetch_array($result))
    6. {
    7. echo $row['user_name']."";
    8. }
    9.  
    10.  
     
  4. xaocbozzz

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

    С нами с:
    4 апр 2012
    Сообщения:
    19
    Симпатии:
    0
    patashnik, group_id не хранит постоянные значения, они могут меняться. Мне нужно "цепляться" именно за category_name

    Добавлено спустя 30 минут 59 секунд:
    Givan, результата нет (

    **************************************************************
    Пардон, все работает вроде бы. Спасибо!