Как объединить данные двух разных таблиц в один объект JSON - PullRequest
1 голос
/ 04 декабря 2009

я создаю объект 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

оба делают одно и то же, но позже вычисляются также имена некоторых кошек. Эта таблица категорий не может быть объединена с двумя предыдущими таблицами, поэтому мне нужно вычислить это имя_ кошки с помощью другого запроса.

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

Как я могу объединить эти два результата в объект json. Плз руководство !!

1 Ответ

0 голосов
/ 21 декабря 2013

Похоже, что у вас есть 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, ...) Похоже, что эта способность может упростить ваши схемы (или, по крайней мере, имена столбцов) и упростить их выполнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...