Как объединить две таблицы Post / Category MYSQL SELECT в один

У меня два MySQL запросов:

1) "SELECT ID,post_title,post_category,post_perma FROM ".TBL_POSTS." WHERE published='1' AND page='0' ORDER BY ID DESC LIMIT 10" 2) "SELECT p.cat_ID,p.cat_nicename FROM ".TBL_CATEGORIES." n, ".TBL_CATEGORIES." p WHERE n.lft BETWEEN p.lft AND p.rgt AND n.cat_ID='".post_category."' ORDER BY p.lft 

Первый запрос выбирает сообщения, а затем второй выбирает путь категории по post_category обратите внимание, что post_category будет взята из первого запроса, post_category является общим в обеих таблицах .. в первой таблице он называется post_category а во втором – cat_ID

Прямо сейчас я запускаю его в петле foreach, что не очень хорошо. Также нужно заметить, что второй запрос также возвращает Array и что один массив должен соответствовать post_category

Может ли мне помочь эксперт SQL?

Много Thanx

Related of "Как объединить две таблицы Post / Category MYSQL SELECT в один"

Пожалуйста, попробуйте, это может быть полезно для вас.

 SELECT a.ID, a.post_title,a.post_category,a.post_perma, b.cat_ID, b.cat_nickname FROM (SELECT ID,post_title,post_category,post_perma FROM ".TBL_POSTS." WHERE published='1' AND page='0' ORDER BY ID DESC LIMIT 10) a LEFT JOIN (SELECT p.cat_ID as cat_ID,p.cat_nicename as cat_nickname FROM " . TBL_CATEGORIES . " n, " . TBL_CATEGORIES . " p WHERE n.lft BETWEEN p.lft AND p.rgt AND n.cat_ID = '" .$post_category. "' ORDER BY p.lft) b ON a.ID = b.cat_ID 

Я бы использовал LEFT JOIN

Как это:

 $sql = "SELECT `p`.`ID`,`p`.`post_title`,`p`.`post_category`,`p`.`post_perma`,`c`.`cat_ID`,`c`.`cat_nicename` FROM `".TBL_POSTS."` AS `p` "; $sql .= "LEFT JOIN `".TBL_CATEGORIES."` AS `c` ON `c`.`cat_ID`=`p`.`post_category` WHERE `p`.`published`='1' AND `p`.`page`='0' ORDER BY `p`.`ID` DESC LIMIT 10"; 

Возможно, вам придется настроить WHERE , чтобы удовлетворить ваши потребности подробнее ..

Обратите внимание: это одна строка, я просто разделил их на две строки, чтобы их было легче читать. .= – добавить текущую строку.