簡體   English   中英

如何將兩個Post / Category表MYSQL SELECT查詢合並為一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM