Я разрабатываю веб-сайт электронной коммерции с использованием Laravel 8. Я пишу следующий скрипт для определения общей цены и общего количества по одному номеру заказа. Из следующего сценария появляется ОШИБКА, в которой проблема, пожалуйста, помогите мне.
* Сначала я пишу строку mysql, затем конвертирую Laravel query Builder.

SELECT COUNT (total_price) as totaPrice, COUNT (productqty) as proQnty
FROM (SELECT DISTINCT order_id FROM orderDetails)
LEFT JOIN ordertbl 
ON ordertbl.id = orderDetails.order_id;
-1
phplover 27 Ноя 2021 в 15:10

2 ответа

Лучший ответ

Думаю, вы хотите просуммировать цены и количества, поэтому используйте агрегатную функцию SUM().
Также вы должны выполнить LEFT соединение ordertbl с orderDetails, а не наоборот:

SELECT ot.id,
       SUM(od.total_price) AS totaPrice, 
       SUM(od.productqty) AS proQnty
FROM ordertbl ot LEFT JOIN orderDetails od
ON ot.id = od.order_id
WHERE ot.id = ?
GROUP BY ot.id;

Или без соединения:

SELECT SUM(total_price) AS totaPrice, 
       SUM(productqty) AS proQnty
FROM orderDetails 
WHERE order_id = ?;

Замените ? на id того порядка, который вам нужен.

0
forpas 27 Ноя 2021 в 15:50
Спасибо, что работает отлично.
 – 
phplover
27 Ноя 2021 в 16:08
$ orderdata = DB :: table ('ordertbl as ot') -> select (array ('ot.id', 'SUM (od.total_price) AS totaPrice', 'SUM (od.productqty) AS proQnty')) - > leftJoin ('orderDetails as od', 'ot.id', '=', 'od.order_id') -> GROUPBY ('ot.id', 'DESC') -> get (); Я написал этот sql в построителе запросов laravel, который показывает ошибку.
 – 
phplover
27 Ноя 2021 в 16:28
Я не могу помочь вам с кодом laravel.
 – 
forpas
27 Ноя 2021 в 16:33
Хорошо спасибо брат
 – 
phplover
27 Ноя 2021 в 16:47

В вашем исходном коде отсутствует псевдоним таблицы для подзапроса. Необработанный запрос должен быть

SELECT COUNT(total_price) as totaPrice, COUNT(productqty) as proQnty
FROM (
    SELECT DISTINCT order_id FROM orderDetails
) T 
LEFT JOIN ordertbl ON ordertbl.id = T.order_id;
0
ScaisEdge 27 Ноя 2021 в 15:26
Извините, запустите этот скрипт, показывающий следующую ошибку: «Количество столбцов mysql.proc неверно. Ожидается 21, найдено 20. Создано с помощью MariaDB 100108, теперь выполняется 100421. Используйте mysql_upgrade, чтобы исправить эту ошибку»
 – 
phplover
27 Ноя 2021 в 15:25
Ответ обновлен .. удалите пробел между счетчиком и (.. дайте мне знать
 – 
ScaisEdge
27 Ноя 2021 в 15:27
ВЫБЕРИТЕ DISTINCT order_id, COUNT (total_price) как totaPrice, COUNT (productqty) как proQnty FROM orderDetails LEFT JOIN ordertbl ON ordertbl.id = orderDetails.order_id; это правильный сценарий. работает правильно. У меня есть еще один сценарий, который я хочу обсудить с вами.
 – 
phplover
27 Ноя 2021 в 15:40