这是我的问题:
SELECT
O.OrderId,
O.Number,
(SELECT
CONCAT(A.Detail, ' ', C.Name, ' / ', Ci.Name)
FROM
kobiakinlar.Address AS A
INNER JOIN
County AS C ON C.CountyId = A.CountyId
INNER JOIN
City AS Ci ON C.CityId = Ci.CityId
WHERE
UserId = O.UserId) AS UserAddress,
(SELECT
CASE
WHEN O.Status = 0 THEN 'Onay Bekliyor'
WHEN O.Status = 1 THEN 'Onaylandı'
WHEN O.Status = 2 THEN 'Reddedildi'
END
) Status,
O.Creation,
(SELECT
CASE
WHEN O.IsDelivered = 0 THEN 'Teslim Edilmedi'
ELSE 'Teslim Edildi'
END
) IsDelivered,
SUM(T.Price) Price,
GROUP_CONCAT(T.NAME) Products
FROM
kobiakinlar.order O
INNER JOIN
(SELECT
P.Name, op.OrderId, op.Price
FROM
kobiakinlar.product P
JOIN kobiakinlar.orderproduct op ON op.ProductId = P.productId
) T ON O.orderId = T.orderId
INNER JOIN
address A ON A.AddressId = O.AddressId
它返回:
但我想试试这个:
我该怎么办?你对我有什么建议吗?
答案 0 :(得分:0)
您需要的语法是:
group_concat(distinct t.name separator ',') as Products
答案 1 :(得分:0)
我改变了我的想法:
SELECT op.OrderId,
O.Number,
SUM(op.Price) Price,
(SELECT CONCAT(A.Detail, ' ',C.Name, ' / ', Ci.Name) FROM kobiakinlar.Address AS A
INNER JOIN County AS C ON C.CountyId = A.CountyId
INNER JOIN City AS Ci ON C.CityId = Ci.CityId
WHERE UserId = O.UserId) AS UserAddress,
( SELECT CASE WHEN O.Status =0 THEN 'Onay Bekliyor' WHEN O.Status =1 THEN 'Onaylandı' WHEN O.Status = 2 THEN 'Reddedildi' END) Status,
O.Creation,
( SELECT CASE WHEN O.IsDelivered =0 THEN 'Teslim Edilmedi' ELSE 'Teslim Edildi' END) IsDelivered,
group_concat(P.Name) 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
GROUP BY op.OrderId