За последние 24 часа нас посетили 53487 программистов и 1765 роботов. Сейчас ищут 1545 программистов ...

Объединение нескольких таблиц при выводе из БД MySQL

Тема в разделе "Прочие вопросы по PHP", создана пользователем BуZoomnuy, 17 июн 2015.

  1. BуZoomnuy

    BуZoomnuy Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Добрый день.

    Вопрос такой: имеется 3 таблицы: area, category, information.
    Таблица area содержит поля id_area, name_area.
    Таблица category содержит поля id_cat, name_cat.
    Таблица information содержит поля id_app, id_area, name_area, title, text, photo, address, author, contact, date.

    В полях information.id_area и information.id_cat содержится порядковый номер, соответствующий тем же полям в других таблицах.

    Как при выводе данных из information подставлять вместо этих порядковых номеров названия из соседних таблиц, которые им соответствуют.

    Больно не пинать если такое уже было и я проглядел, просто ткните носом :)
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  3. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Код (Text):
    1. SELECT * FROM area LEFT JOIN information ON (area.id_area=information.id_area)
    Например, так можно связать и две и три и четыре таблицы
     
  4. BуZoomnuy

    BуZoomnuy Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    При таком запросе и использовании такого вот кода:
    Код (PHP):
    1. <?php
    2.     $result = mysql_query("SELECT * FROM area LEFT JOIN information ON (area.id_area=information.id_area) ORDER BY information.date", $link) or die(mysql_error());
    3.     if (mysql_num_rows($result) > 0)
    4.     {
    5.         $result_view = mysql_fetch_assoc($result);
    6.         do
    7.         {
    8.             echo '<tr>';
    9.             echo '<td>'.$result_view['id_area' ].'</td>';    
    10.             echo '</tr>';
    11.         }
    12.         while($result_view = mysql_fetch_assoc($result));
    13.     }
    14. ?>
    Получаем:
    3
    5
    2

    И все таки вопрос остается не решенным - как нам подставить вместо этих значений соответствующие им названия из таблицы area?
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    через алиас?
     
  6. BуZoomnuy

    BуZoomnuy Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Так алиас, по сути, просто псевдоним. Как его тут применить?
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вот не знаю даже...
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    BуZoomnuy, а если прочитать про Join, а не копировать код, который по доброте душевной дала Catrina?
     
  9. JustAMan

    JustAMan Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    2
    Симпатии:
    0
    Код (Text):
    1. SELECT
    2.   i.*,
    3.   a.name_area AS area_name,
    4.   c.name_cat
    5. FROM information AS i
    6. LEFT JOIN category AS c ON c.id_cat = i.id_cat
    7. LEFT JOIN area AS a ON a.id_area = i.id_area
     
  10. BуZoomnuy

    BуZoomnuy Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Признаю свою ошибку, почитал про Join в Википедии и сразу вкурил :)
    JustAMan, то что нужно! Спасибо!