1

jqueryがテーブルにデータを入力するために使用するプラグイン用のAPIを作成するwordpressをいじっています。私がこれを行う方法を理解するのに助けが必要です。

最初のクエリ、これは「親」の投稿を取得します:

[q1]: Select * from posts as p where p.ID IN ({SomeIDs I am requesting})

2 番目のクエリは、最初のクエリのすべての子を取得します。

[q2]: Select * from posts as p where p.parent_postID IN ({the parentIDs from q1})

結果が 1 つの出力になるように、このクエリを実行するにはどうすればよいですか。子を表示するたびに2番目のクエリを実行し続ける必要はありません(子はデフォルトで表示されます。最初のクエリを制限できるようにするためです)。

最終結果:

_________________________________________________
| | ID | 親のポスト | タイトル | 混乱 |
--------------------------------------------------
| | 894 | 0 | メインタイトル | メインディスク |
| | 898 | 894 | 差分タイトル | デフディスク |
| | 907 | 894 | ディフチルト | デフディスク |
| | 910 | 0 | メインタイトル | メインディスク |
| | 916 | 910 | 差分タイトル | デフディスク |
| | 919 | 0 | メインタイトル | メインディスク |
--------------------------------------------------

ID 919 には子がないことがわかりますが、それでも結果に表示したいと考えています。

だから私は参加しようとしましたが、私ができる別のタイプの参加がない限り、ID = post_parentID を持たないレコードを失います...

アイデアはq1の「LIMIT」で、組み合わせた結果がq2でソートされ、テーブルを作成するときのjQuerys forloopの結果は<TR>、IDとpost_parentが一致する場合のbgを変更するだけです

これは私が使用しなければならないスキームです...Wordpressのものです。また、どの子を表示するかについて、q2 に追加の基準があるということでもありません。例。子に post_meta を追加します.... meta_key = 'lang_i18N' meta_value='en' なので、postmeta の q2 への結合を追加できます

アップデート:

これはq1です:

[q1]

    選択する
        posts.ID AS myItem_ID,
        posts.post_parent AS 親 ID、
        posts.post_title AS タイトル、
        posts.post_content AS fullDesc、
        posts.post_excerpt AS shortDesc、
        posts.post_status AS ステータス、
        posts.menu_order AS fetured_Order、
        json_meta.meta_value AS json_input,
        meta.meta_value AS ベンダー ID、
        vendor.post_title AS vendorName,
        posts.post_modified AS modifiedDate
    FROM wp_posts AS 投稿
    左結合 wp_postmeta AS メタ
        ON meta.post_id = posts.ID
    左結合wp_postmeta AS json_meta
        ON json_meta.post_id = posts.ID
    左結合 wp_postmeta AS i18N
        ON i18N.post_id = posts.ID
    LEFT JOIN wp_posts AS ベンダー
        オン vendor.ID = meta.meta_value
    WHERE meta.meta_key = '代理店'
    AND json_meta.meta_key = 'json_input'
    AND posts.post_type = 'activity_item'
    AND posts.post_status = '公開'
    AND posts.ID IN (1080, 1231, 1273, 1882, 1937)
    リミット 0,2

[OK]で親のリストが表示されます...今、q1と同じ子を含めたいのですが、i18N = 'es'意味が欲しいかもしれません。i18Nの値フィールドが何であれ、親が必要ですが、「es」である子が必要です。おそらく4人の子供がいるかもしれませんが、LIMITで2人の親のみを表示したいのですが、彼らが持っている多くの子供(子供を制限するものではありません)は、これを1つのクエリで行うことができますか?データ量が多いという理由だけで PHP から離れようとしています。

4

2 に答える 2

1

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; 
}
于 2012-06-18T11:09:42.540 に答える
0

これを試して ::

Select 
id,
if_null(post_parent_id,0)

from posts as p 

left join 

(Select parent_id from posts where id= ?/*input*/) as parent_temp_table

on (parent_temp_table.parent_id = p.postID)
于 2012-06-18T10:56:34.060 に答える