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

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
Это продолжения темы Для просмотра ссылки Войди или Зарегистрируйся , ну так как она закрыта, пришлось создать новую
С запросом к двум таблицам я разобрался, рабочий пример:
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
 

duxabilii

Постоялец
Регистрация
3 Фев 2012
Сообщения
61
Реакции
37
Это продолжения темы Для просмотра ссылки Войди или Зарегистрируйся , ну так как она закрыта, пришлось создать новую
С запросом к двум таблицам я разобрался, рабочий пример:
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");
  }       
}
єто занимает много времени, как написать всего один запрос,за пример буду благодарен
Посмотреть вложение 104724 Посмотреть вложение 104725 Посмотреть вложение 104723


Попробуй вот этот запрос (не тестил из-за отсутсвия базы).
Код:
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
 
Сверху