Как обновить таблицу из выбранного запроса - PullRequest
3 голосов
/ 21 мая 2019

Я создаю временную таблицу с использованием фасада БД, а затем с помощью запроса выбора мне нужно обновить некоторые столбцы во временной таблице на основе условия

DB::update('update table_temp_topcustomer 
            set ordercount = aaa.ordercount 
            from 
            (select count(id) as ordercount,mobileno 
             from order_hdrs 
             group by mobileno 
            ) as aaa
            where table_temp_topcustomer .mobileno = aaa.mobileno
          ');

, это выдает эту ошибку

Синтаксическая ошибка или нарушение доступа: 1064 У вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с 'from (выберите count (id) в качестве ordercount, mobileno из группы order_hdrs по mobileno' в строке 1 (SQL: обновить table_temp_topcustomer, установите ordercount = aaa.ordercount from(выберите count (id) как ordercount, mobileno из группы order_hdrs по mobileno) как aaa)

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 27 мая 2019
UPDATE table_temp_topcustomer JOIN 
        ( SELECT order_hdrs count(*) as ordercount 
              FROM order_hdrs 
              GROUP BY mobileno
        ) AS aaa 
           ON table_temp_topcustomer.mobileno = aaa.mobileno
        SET   table_temp_topcustomer.ordercount = aaa.ordercount 
0 голосов
/ 21 мая 2019

Я думаю, вы не можете сделать в одном запросе.Согласно моему пониманию.Сначала получите результат выбора и в цикле выполните обновление.

Вы должны попробовать что-то вроде ниже.

$result = DB::select('select count(id) as ordercount,mobileno 
                 from order_hdrs 
                 group by mobileno');
foreach($result as $item) {

    DB::update('update table_temp_topcustomer 
               set ordercount = '. $item->ordercount .' 
              where table_temp_topcustomer.mobileno = ' $item->mobileno);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...