MySql Result Set Combine Columns - PullRequest
       2

MySql Result Set Combine Columns

0 голосов
/ 24 ноября 2011

У меня есть этот набор результатов из моего запроса:

OrderId CustomerId  ProducerId  CustomerPayment ProducerPayment
1       1           3           10              5
1       1           4           10              5
1       2           3           10              5
1       2           4           10              5

Мне нужно вернуть этот результат в это:

OrderId UserId  Payment
1       1       20
1       2       20
1       3       10
1       4       10

Просто объединяя CustomerId и ProducerId в UserId. То же самое с Payment столбцами.

Есть ли способ достичь этого с помощью простых select и group by? Я избегаю temp tables, вызывая несколько одинаковых queries и т.п. для оптимизации. Я надеюсь, что это возможно.

Большое спасибо

Ответы [ 2 ]

1 голос
/ 24 ноября 2011
SELECT 
OrderId,
CustomerID AS UserId,
SUM (CustomerPayment) As Payment
FROM orders
UNION ALL
SELECT 
OrderId,
ProducerId AS UserId,
SUM (ProducerPayment) As Payment
FROM orders
0 голосов
/ 24 ноября 2011

Попробуйте что-то вроде этого:

select
    OrderId,
    CustomerId,
    sum(CustomerPayment) Payment,
    group_concat(OrderId separator ',') listOrders /* list all OrderID's from the user and separates these with a , */
from your_table
group by CustomerId

Не знаете, как выглядит ваш запрос atm?

...