我正在使用 wordpress 为我的插件制作 API,jquery 用来填充表格。需要帮助弄清楚我将如何做到这一点。
第一个查询,这将获取“父”帖子:
[q1]:
Select * from posts as p where p.ID IN ({SomeIDs I am requesting})
第二个查询,这将得到第一个的所有 child :
[q2]:
Select * from posts as p where p.parent_postID IN ({the parentIDs from q1})
我怎样才能运行这个查询,以便结果是一个输出。我不想每次要显示子项时都必须继续运行第二个查询(子项默认显示,我的想法是这样我就可以限制第一个查询)。
最终结果:
_________________________________________________ | ID | post_parent | title | disruption | ------------------------------------------------- | 894 | 0 | main title | main disc | | 898 | 894 | diff title | diff disc | | 907 | 894 | diff tilte | diff disc | | 910 | 0 | Main title | main disc | | 916 | 910 | diff title | diff disc | | 919 | 0 | Main title | Main disc | -------------------------------------------------
您会注意到 ID 919 没有 child ,我仍然希望它显示在结果中。
所以我尝试加入,我会丢失没有 ID = post_parentID 的记录,除非我可以做另一种类型的加入...
想法是 q1 上的“LIMIT”,组合结果按 q2 排序,然后在制作表格时 jQuerys forloop 的结果只会改变 <TR>
的 bg如果 ID 和 post_parent 匹配
这是我必须使用的方案... Wordpress 的;也不是说在第二季度会有关于我想展示哪些 child 的额外标准。例子。我将为 children 添加一个 post_meta .... meta_key = 'lang_i18N' meta_value='en' 所以我可以为 postmeta 添加一个连接到 q2
更新:
这是第 1 题:
[q1]
SELECT posts.ID AS myItem_ID, posts.post_parent AS parentID, posts.post_title AS title, posts.post_content AS fullDesc, posts.post_excerpt AS shortDesc, posts.post_status AS status, posts.menu_order AS fetured_Order, json_meta.meta_value AS json_input, meta.meta_value AS vendorID, vendor.post_title AS vendorName, posts.post_modified AS modifiedDate FROM wp_posts AS posts LEFT JOIN wp_postmeta AS meta ON meta.post_id = posts.ID LEFT JOIN wp_postmeta AS json_meta ON json_meta.post_id = posts.ID LEFT JOIN wp_postmeta AS i18N ON i18N.post_id = posts.ID LEFT JOIN wp_posts AS vendor ON vendor.ID = meta.meta_value WHERE meta.meta_key = 'agency' AND json_meta.meta_key = 'json_input' AND posts.post_type = 'activity_item' AND posts.post_status = 'publish' AND posts.ID IN (1080, 1231, 1273, 1882, 1937) LIMIT 0,2
好的,这给了我父列表...现在我想包括与 q1 相同的子项,但也许我想要 i18N = 'es'
这意味着我想要 i18N 具有的任何值字段的 parent ,但我想要'es'的 child ,也许有 4 个 child ,好吧,我希望 LIMIT 只显示 2 个 parent ,以及他们有多少 child (不限制 child )这可以在一个查询中完成吗?我试图远离 PHP 只是因为它包含大量数据。
最佳答案
如果你想在 php 中使用递归函数来获取父行的所有嵌套子行,那么可以使用下面的函数:-
function get_categories_subcategories($id)
{
$condition = isset($id)?"post_parent=".$id."":"post_parent=0";
$sql="select id,post_parent,title,disruption from posts where ".$condition."";
$query=mysql_query($sql);
$arr = array();
if(mysql_num_rows($query))
{
while($result=mysql_fetch_array($query))
{
$arr[] = array(
"id" => $result["id"],
"post_parent" => $result["post_parent"],
"title" => $result["title"],
"disruption" => $result["disruption"],
"child" => get_categories_subcategories($result["id"])
);
}
}
return $arr;
}
关于mysql - 艰难的 mysql 嵌套表结果挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11081157/