使用 Wordpress $wpdb 获取按 2 列排序的行结果

Get rows results sorted by 2 columns with Wordpress $wpdb

我有 'transactions' table:

id user amount currency plan_id
1   1     11     usd      1
2   1     9      usd      2
3   1     10     usd      2
4   2     10     usd      7
5   1     7      eur      3
6   1     5      eur      3
7   1     6      eur      4
8   3     3      usd      8

我想获得按货币排序的金额总和,然后 plan_id 每个给定用户:$results[currency][plan_id]

$results['usd'][1] = 11
$results['usd'][2] = 19
$results['eur'][3] = 12
$results['eur'][4] = 6

到目前为止我有:

$query = '
    SELECT plan_id, currency, SUM( amount ) as earnings
    FROM transactions
    WHERE user = 1
    GROUP BY currency, plan_id
';
$results = $wpdb->get_results( $query, OBJECT_K );

但它只返回按 plan_id 定期排序的行,忽略按货币排序:

Array ( [1] => stdClass Object ( [plan_id] => 1 [currency] => usd [earnings] => 11 ) [2] => stdClass Object ( [plan_id] => 2 [currency] => usd [earnings] => 19 ) [3] => stdClass Object ( [plan_id] => 3 [currency] => eur [earnings] => 12 ) [7] => stdClass Object ( [plan_id] => 7 [currency] => eur [earnings] => 6 ) ) 

甚至可以用 $wpdb 做吗?

请帮忙。谢谢

您需要告诉 MySQL 如何使用 ORDER BY clause(您的查询中缺少)对结果进行排序。

这将产生您正在寻找的结果:

SELECT `plan_id`, `currency`, SUM( `amount` ) AS `earnings`
FROM `transactions`
WHERE `user` = 1
GROUP BY `currency`, `plan_id`
ORDER BY `currency` DESC, `plan_id` ASC