2009-12-04 4 views
0

IAM делает объект JSON с помощью следующего запроса, как объединить два различных данных таблицы в единый объект 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 

Теперь IAM имея другой запрос

Запрос 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_name с другим запросом.

Теперь я хочу объект json, который должен иметь все записи запроса 2 и соответствующий результат запроса 3. Sumthing как это (если объяснено в простых словах): запрос 2 результат [0] плюс запрос 3 результат [0], запрос 2 результат [1] плюс запрос 3 результат [1]

Как может я клуб эти два результаты вместе в объекте json. Руководство Plz !!

+1

Это можно легко решить, сделав SQL-запрос JOIN'ed - можете ли вы дать нам схему для трех таблиц? – gnarf

+0

Что будет «запрашивать 3 результата [1]»? Вы выбираете только одно поле в своем третьем запросе, cat_name. – VolkerK

ответ

0

Похоже, что у вас есть cat_id в категории таблицы и в основном или в схеме. При использовании имени столбца, которое встречается в двух разных таблицах запроса, вам нужно определить, с какой таблицей вы говорите, когда используете имя столбца.

У меня нет схемы, чтобы узнать, какие столбцы из этой таблицы, но вот догадка о том, как их присоединить. (Примечание: я добавил пробелы после запятых, чтобы сделать его более удобным для чтения)

$q=qq("select main_cat_id, main_cat_name, id, name, scheme.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 scheme.cat_id=category.cat_id order by scheme_1_year DESC"); 

В качестве альтернативы, вы можете использовать псевдонимы таблиц.

$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"); 

Если cat_id от оригинального QQ в main вместо scheme, то вам придется настроить запрос соответствующим образом. Это можно сделать с помощью псевдонимов таблиц или без них.

$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"); 

Дополнительное примечание, если вы хотите один запрос, чтобы выбрать один из двух столбцов из двух разных таблиц и столбцов имеют одинаковые имена, то вы должны использовать столбец псевдоним. (например, select ... category.cat_name as category_cat_name from main, ...) Похоже, что эта способность может упростить ваши схемы (или, по крайней мере, имена столбцов) и упростить их использование.

Смежные вопросы