[英]How to combine two Post/Category tables MYSQL SELECT queries into one
我有兩個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專家可以幫助我嗎?
許多感激
請嘗試此操作可能對您有幫助。
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
子句以進一步滿足您的需求。
請注意:這是一個字符串,我將它們分為兩行,因此更易於閱讀。 .=
將附加當前字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.