Mysql
 sql >> Base de données >  >> RDS >> Mysql

La requête MySql s'exécute mais ne fonctionne pas dans sp

Je suis presque sûr que la raison est la confusion entre UserId et o.UserId.

Dans le contexte de la requête, il ne sait pas que vous voulez dire l'argument du sp. Changez le nom de l'argument en quelque chose comme "arg_UserId" et remplacez-le dans la requête, le cas échéant.

Vous pouvez également simplifier la syntaxe de votre requête. Le SELECT en dehors des instructions de cas est redondante. De plus, en supposant que les jointures au comté et à la ville sont toujours 1-1, vous pouvez réécrire la requête comme :

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;