Php 如何将两个不同的表数据组合成一个json对象

Php 如何将两个不同的表数据组合成一个json对象,php,json,object,Php,Json,Object,iam通过以下查询生成json对象 $arr = array(); $qs=qq("select main_cat_id,main_cat_name,id,name,cat_id,cat_id_main from main,scheme where main_cat_name='xyz' and cat_id_main=main_cat_id"); while($obj = mysql_fetch_object($qs)) {

iam通过以下查询生成json对象

    $arr = array();
        $qs=qq("select main_cat_id,main_cat_name,id,name,cat_id,cat_id_main from main,scheme where main_cat_name='xyz' and cat_id_main=main_cat_id");
        while($obj = mysql_fetch_object($qs))
        {
            $arr[] = $obj;
        }
        $total=sizeof($arr);
        $jsn_obj='{"scheme":'.json_encode($arr).',"totalrow":"'.$total.'"}';

 // this is a mock example
现在我有另一个问题

问题2:

    $q=qq("select main_cat_id,main_cat_name,id,name,cat_id,cat_id_main from main,scheme where main_cat_name='xyz' and cat_id_main=main_cat_id order by scheme_1_year DESC");
    while($r=mysql_fetch_array($q))
    {
        $cats_id=$r['cat_id'];
        if($cats_id!=0)
        {
            $qw=qq("select cat_name from category where cat_id='$cats_id'");  // Query 3
            $rw=mysql_fetch_array($qw);
            $catm_name=$rw['cat_name'];
        }
    }
// this is a mock example
两者都在做同样的事情,但后者也在计算某些cat名称。此类别表无法与前两个表合并,因此我必须使用另一个查询来计算此cat_名称

现在我想要一个json对象,它应该包含查询2的所有条目和相应的查询3结果。 这样的概括(如果用简单的文字解释): 查询2结果[0]加上查询3结果[0],查询2结果[1]加上查询3结果[1]


如何将这两个结果合并到一个json对象中。Plz指南

看起来您在表类别中以及在main或scheme中都有cat_id。当使用出现在查询的两个不同表中的列名时,必须确定使用列名时所指的表

我没有模式来知道哪些列来自哪个表,但这里是如何连接它们的猜测。(注意:为了便于阅读,我在逗号后添加了空格)

或者,可以使用表别名

$q=qq("select main_cat_id, main_cat_name, id, name, s.cat_id, cat_id_main, c.cat_name from main m, scheme s, category c where main_cat_name='xyz' and cat_id_main=main_cat_id and s.cat_id=c.cat_id order by scheme_1_year DESC");
$q=qq("select main_cat_id, main_cat_name, id, name, main.cat_id, cat_id_main, category.cat_name from main, scheme, category where main_cat_name='xyz' and cat_id_main=main_cat_id and main.cat_id=category.cat_id order by scheme_1_year DESC");
$q=qq("select main_cat_id, main_cat_name, id, name, m.cat_id, cat_id_main, c.cat_name from main m, scheme s, category c where main_cat_name='xyz' and cat_id_main=main_cat_id and .cat_id=c.cat_id order by scheme_1_year DESC");
如果原始qq中的cat_id位于
main
而不是
scheme
,则您必须相应地调整查询。这仍然可以通过使用或不使用表别名来完成

$q=qq("select main_cat_id, main_cat_name, id, name, s.cat_id, cat_id_main, c.cat_name from main m, scheme s, category c where main_cat_name='xyz' and cat_id_main=main_cat_id and s.cat_id=c.cat_id order by scheme_1_year DESC");
$q=qq("select main_cat_id, main_cat_name, id, name, main.cat_id, cat_id_main, category.cat_name from main, scheme, category where main_cat_name='xyz' and cat_id_main=main_cat_id and main.cat_id=category.cat_id order by scheme_1_year DESC");
$q=qq("select main_cat_id, main_cat_name, id, name, m.cat_id, cat_id_main, c.cat_name from main m, scheme s, category c where main_cat_name='xyz' and cat_id_main=main_cat_id and .cat_id=c.cat_id order by scheme_1_year DESC");

另一个注意事项是,如果希望单个查询从两个不同的表中选择两列,并且这些列具有相同的名称,则应使用列别名。(例如,
从main中选择…category.cat_name作为category_cat_name,
)这项功能似乎可以简化您的模式(或者至少是列名)并使其更易于遵循。

这可以通过进行联接SQL查询来轻松解决-您能给我们三个表的模式吗?什么是“查询3结果[1]”?在第三个查询中,您只选择了一个字段,即cat_name。