За последние 24 часа нас посетили 17737 программистов и 1718 роботов. Сейчас ищут 964 программиста ...

Выборка из трех таблиц

Тема в разделе "PHP для новичков", создана пользователем RomanCasper, 11 янв 2015.

  1. RomanCasper

    RomanCasper Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    46
    Симпатии:
    1
    Всем привет. Мне нужно сделать выборку из трех таблиц по определенному правилу.
    Попробую объяснить понятней.
    Из таблицы group_10 назовем её gr выбрать всё
    + нужно к результату добавить всё из таблицы archive_games назовем её ag по правилу (ag.id = gr.g_fcast)
    + из таблицы teams назовем её t1 добавить столбец src_team_logotype по правилу (t1.team_name = ag.first_team)
    + из таблицы teams назовем её t2 добавить столбец src_team_logotype по правилу (t2.team_name = ag.second_team)
    Я пробовал сделать такую выборку :
    Код (Text):
    1.  
    2. SELECT gr.*, ag.*, t1.src_team_logotype as logo1t, t2.src_team_logotype as logo2t
    3. FROM group_10 gr
    4. JOIN archive_games ag on (ag.id = gr.g_fcast)
    5. JOIN teams t1 on (t1.team_name = ag.first_team)
    6. JOIN teams t2 on (t1.team_name = ag.second_team)
    Но она не работает, подскажите что я делаю не так, и направьте в правильное русло.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Дай ссылку на sqlfiddle.com так легче будет тебе помочь.
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    оффтоп: лепёхин, это ты?))))

    по существу: а что не так работает или не работает вовсе?
     
  4. RomanCasper

    RomanCasper Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    46
    Симпатии:
    1
    Код (Text):
    1. $query = "
    2. SELECT gr.*, ag.*, t1.src_team_logotype as logo1t, t2.src_team_logotype as logo2t
    3. FROM group_10 gr
    4. JOIN archive_games ag on (ag.id = gr.g_fcast)
    5. JOIN teams t1 on (t1.team_name = ag.first_team)
    6. JOIN teams t2 on (t1.team_name = ag.second_team)
    7. ";
    8. $result = mysql_query($query, $db);
    Warning: mysql_query() expects parameter 2 to be resource, null given on line 9 (это $result = mysql_query($query, $db);)

    Добавлено спустя 1 минуту 54 секунды:
    ой, я забыл сделать include('bd.php);

    Добавлено спустя 14 минут 46 секунд:
    Запрос вроде работает, но я не могу вывести результат выборки. Пытался разными способами, но все равно пусто. Данные во всех таблицах есть, все названия перепроверил.
    Код (Text):
    1.  
    2. <?php
    3. include('bd.php');
    4. $query = "
    5. SELECT gr.*, ag.*, t1.src_team_logotype as logo1t, t2.src_team_logotype as logo2t
    6. FROM group_10 gr
    7. JOIN archive_games ag on (ag.id = gr.g_fcast)
    8. JOIN teams t1 on (t1.team_name = ag.first_team)
    9. JOIN teams t2 on (t1.team_name = ag.second_team)
    10. ";
    11.  
    12. if (!$result = mysql_query($query, $db)){
    13.     echo "<br>Не могу выполнить запрос<br>";
    14.     exit();
    15. } else {
    16.     echo "<br>Запрос выполнен <br>";
    17. }
    18.    
    19. while ($mas = mysql_fetch_row($result)){
    20.     foreach ($mas as $field){
    21.         echo $field." ";
    22.     }
    23.     echo "<br>";
    24. }
    25. ?>
    Выводится только "Запрос выполнен "
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну выполнен, ок. а еще он может в результате иметь НОЛЬ строк. это не считает ошибкой. это значит что по заданному условию не нашлось данных. поэтому запрос выполнен но итерировать нечего.
     
  6. RomanCasper

    RomanCasper Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    46
    Симпатии:
    1
    Ура, я нашел ошибку)
    JOIN teams t1 on (t1.team_name = ag.first_team)
    JOIN teams t2 on (t1.team_name = ag.second_team)
    Поэтому и результат пустой был)