Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage wird ausgeführt, funktioniert aber nicht in SP

Ich bin mir ziemlich sicher, dass der Grund die Verwechslung zwischen UserId und o.UserId ist.

Im Abfragekontext weiß es nicht, dass Sie das Argument für den SP meinen. Ändern Sie den Namen des Arguments in etwas wie "arg_UserId" und ersetzen Sie ihn gegebenenfalls in der Abfrage.

Sie können auch Ihre Abfragesyntax vereinfachen. Die SELECT Außerhalb der Fälle sind Aussagen überflüssig. Unter der Annahme, dass die Joins zu Landkreis und Stadt immer 1-1 sind, können Sie die Abfrage auch wie folgt umschreiben:

SELECT op.OrderId, O.Number,  SUM(op.Price) Price,
       CONCAT(A.Detail, ' ', C.Name, ' / ', Ci.Name) AS UserAddress,
       (CASE WHEN O.Status =0 THEN 'Onay Bekliyor'  WHEN O.Status =1 THEN 'Onaylandı' WHEN O.Status = 2 THEN 'Reddedildi' END) Status,
       O.Creation,
       (CASE WHEN O.IsDelivered =0 THEN 'Teslim Edilmedi' ELSE 'Teslim Edildi' END) IsDelivered,
       group_concat(P.Name) as Product
FROM kobiakinlar.product P JOIN
     kobiakinlar.orderproduct op
     ON op.ProductId = P.productId JOIN
     kobiakinlar.order O
     ON O.orderId = op.OrderId JOIN 
     kobiakinlar.address A ON A.addressId = O.AddressId join
     County C
     ON C.CountyId = A.CountyId join
     City AS Ci
     ON C.CityId = Ci.CityId
WHERE O.UserId = arg_UserId
GROUP BY op.OrderId;