Php 如何将两个不同的表数据组合成一个json对象
iam通过以下查询生成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)) {
$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。