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