Search code examples
mysqlsqlgroup-bygroup-concat

how to use group_concat with group by


Here is my query:

 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

It returns:

enter image description here

But I want to try have this one:

enter image description here

What should I do? Do you have any suggestion for me?


Solution

  • I changed my quert with this:

        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