Один запрос к несколько таблиц?

Тема в разделе "Базы данных", создана пользователем usergeyv, 10 июл 2019.

Модераторы: latteo
  1. usergeyv

    usergeyv Постоялец

    Регистр.:
    5 июл 2013
    Сообщения:
    143
    Симпатии:
    22
    Это продолжения темы https://www.nulled-mirror.com/threads/304232/ , ну так как она закрыта, пришлось создать новую
    С запросом к двум таблицам я разобрался, рабочий пример:
    PHP:
    $sql $db->query"SELECT *, MATCH title AGAINST ('$search' IN BOOLEAN MODE) as relev FROM dle_post LEFT JOIN dle_files ON dle_files.news_id = dle_post.id WHERE MATCH title AGAINST ('$search') >0 ORDER BY relev DESC LIMIT 10");
    тепер мне нужно получить еще инфу с таблицы dle_tracker_multitracker.fid по dle_files.id
    Мое решения:
    PHP:
    foreach (result as $key => $value){
    if(
    $value["files_id"]) {
         
    $m_tr $db->super_query("SELECT link AS m_link, SUM(leechers) AS m_leechers, SUM(seeders) AS m_seeders, SUM(completed) AS m_completed FROM dle_tracker_multitracker WHERE fid='{$value['files_id']}' ORDER BY id ASC");
      }        
    }
    єто занимает много времени, как написать всего один запрос,за пример буду благодарен
    Screenshot_34.png Screenshot_35.png Screenshot_33.png
     
  2. bobeire

    bobeire Создатель

    Регистр.:
    15 июл 2019
    Сообщения:
    21
    Симпатии:
    7
  3. duxabilii

    duxabilii Создатель

    Регистр.:
    4 фев 2012
    Сообщения:
    12
    Симпатии:
    7

    Попробуй вот этот запрос (не тестил из-за отсутсвия базы).
    Код:
    SELECT
        dle_post.*,
        MATCH title AGAINST ( '$search' IN BOOLEAN MODE ) AS relev,
        dle_tracker_multitracker.link AS m_link,
        SUM( dle_tracker_multitracker.leechers ) AS m_leechers,
        SUM( dle_tracker_multitracker.seeders ) AS m_seeders,
        SUM( dle_tracker_multitracker.completed ) AS m_completed
    FROM
        dle_post
        LEFT JOIN dle_files ON dle_files.news_id = dle_post.id
        LEFT JOIN dle_tracker_multitracker ON dle_tracker_multitracker.fid = dle_files.id
    WHERE
        MATCH title AGAINST ( '$search' ) > 0
    ORDER BY
        relev DESC,
        dle_tracker_multitracker.id ASC
        LIMIT 10