За последние 24 часа нас посетили 21778 программистов и 1019 роботов. Сейчас ищут 590 программистов ...

Помогите!! Как отобразить название по ID -php,sql из одной таблицы

Тема в разделе "Сделайте за меня", создана пользователем Александр777, 25 дек 2019.

  1. Александр777

    Александр777 Новичок

    С нами с:
    25 дек 2019
    Сообщения:
    7
    Симпатии:
    0
    Всем доброго времени! Я новичок!
    Подскажите как посредством sql и php отобразить на странице имена .
    Суть вопроса такова! Есть 1 таблица контрагентов! Во вторую таблицу вносятся в два разных столбца два контр агента. По id Я их вывожу и все ок. Но стоило мне отобразить их имена и тут лажа...
    Вот часть кода
    запрос
    $stmt = $pdo->prepare('SELECT * FROM deals
    LEFT JOIN users ON users.id = deals.id_user
    LEFT JOIN contr_agents ON contr_agents.id_contr_agent = deals.id_contr_agent AND id_contr_agent_2
    ORDER BY deals.date_arrival DESC,
    deals.id_deals DESC
    LIMIT :current_page, :record_per_page');

    вывод
    <?php foreach ($deals as $contact): ?>
    <tr>
    <td><?=$contact['org_name']?></td></td>
    <td><?=$contact['id_contr_agent']?></td>
    <td><?=$contact['id_contr_agent_2']?></td>
    </tr>
    <?php endforeach; ?>

    org_name - это их имя
     
  2. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. print_r($deals);
    посмотрите что там, скорее всего org_name там нет.
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Насколько я понял, нужно делать LEFT JOIN для каждого контрагента и переименовывать в запросе присоединяемые таблицы/их поля.
     
  4. Александр777

    Александр777 Новичок

    С нами с:
    25 дек 2019
    Сообщения:
    7
    Симпатии:
    0
    org_name там есть, но для кого-то одного, так как данные берутся с одной таблицы
    --- Добавлено ---
    Если Я делаю 2 LEFT JOIN для одной таблицы, то вообще ничего не отображается. Нужно как то переименовать org_name, чтобы система понимала, что отображать.
    Разные id отображаются в столбцах правильно, если пишу отобразить org_name, то отображает либо первого, либо второго...
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Нормально покажите исходные таблицы и что нужно получить. Без ваших фантазий по реализации.
     
  6. Александр777

    Александр777 Новичок

    С нами с:
    25 дек 2019
    Сообщения:
    7
    Симпатии:
    0
    Если Я делаю 2 LEFT JOIN для одной таблицы, то вообще ничего не отображается. Нужно как то переименовать org_name, чтобы система понимала, что отображать.
    Разные id отображаются в столбцах, если пишу отобразить org_name, то отображает либо первого, либо второго...
    Таблица 1
    contr_agents
    id_contr_agent[​IMG] int(11) AUTO_INCREMENT [​IMG]
    id_user int(11)
    id_agent_type int(11)
    org_name varchar(100)

    Таблица 2
    deals
    id_deals[​IMG] int(11) AUTO_INCREMENT
    id_user int(11)
    id_contr_agent int(11)
    id_contr_agent_2 int(11)

    Нужно вывести имена id_contr_agent и id_contr_agent_2 таблицы deals. Данные org_name берутся из таблицы contr_agents
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Попробуйте так:
    Код (Text):
    1. SELECT deals.*, ca1.org_name org_name_1, ca2.org_name org_name_2 FROM deals
    2. LEFT JOIN contr_agents ca1 ON deals.id_contr_agent=ca1.id_contr_agent (тут можно просто USING(id_contr_agent))
    3. LEFT JOIN contr_agents ca2 ON deals.id_contr_agent_2=ca2.id_contr_agent
    ca1.org_name можно не переименовывать, т.е. написать без алиаса org_name_1.
     
    Александр777 нравится это.
  8. Александр777

    Александр777 Новичок

    С нами с:
    25 дек 2019
    Сообщения:
    7
    Симпатии:
    0
    Спасибо большое! Все получилось!!На будущее буду знать!!! С наступающим Вас!!!