Я пытаюсь присоединиться к подзапросу к основному запросу с помощью Laravel Query Builder в контексте, аналогичном приведенному ниже примеру. Я предполагал, что основной запрос распознает это, указав базу данных и таблицу, используемые подзапросом. Однако Laravel выдает следующую ошибку SQL:
SQLSTATE[42S02]: базовая таблица или представление не найдены: 1146 Таблица «data_source2.data_table1» не существует
Я попытался добавить к исходному запросу префикс «data_source1», но все равно сталкиваюсь с той же ошибкой, что показана выше.
$source_query = DB::connection('data_source1')
->table('data_table1')
->select(DB::raw('
SUM(data_table1.value) as value
'))
$data = DB::connection('data_source2')
->table('data_table2')
->joinSub($source_query, 'source_query', function ($join) {
$join->on('data_table2.hour', '=', 'source_query.hour');
})
->where('date', '=', $date)
->select(DB::raw('
source_query.value as value,
'))
->get();
в data_source2 нет таблицы data_table1 @AntonyMN
В итоге я понял это для всех, кто сталкивается с этим, если вы хотите использовать joinSub(), когда запросы используют базовые таблицы в разных базах данных.
используйте следующее в подзапросе, к которому вы будете присоединяться:
$source_query = DB::table('data_source1.data_table1')
скорее, чем:
$source_query = DB::connection('data_source1')
->table('data_table1')
Есть ли в соединении
data_source2
таблица базы данных с именемdata_table1
?