0

私の問題は説明するのがかなり簡単です:

列の DISTINCT を選択するクエリが必要ですが、通常は DISTINCT なしで他の列も選択する必要があります。例としてそのようなクエリを誰かに見せてもらえますか?

ユニバーサル クエリである必要があります。

ありがとう。

$sql = 'SELECT DISTINCT user_id FROM ' . DONATION_SECURITY_TABLE . " 
        $sql_where 
        ORDER BY payment_status ASC, user_id ASC";

このクエリでは、user_id だけでなく、donation_id、payment_status、pending_reason、txn_id、mc_gross、および amount も選択する必要があります。

サンプルテーブル:

donation_id    user_id    mc_gross    payment_status    txn_id (has UNIQUE index)
1              4          5.00        Completed         g54g4
2              5          10.00       Pending           54yhh
3              4          6.00        Pending           54yhg
4              7          15.00       Completed         fdhgf

クエリは次を返す必要があります: user_id の DISTINCT、個別のuser_id の mc_gross の SUM 、最新の payment_status (user_id = 4 の Pending を返します)。

4

2 に答える 2

2

これは機能するはずです:

select t1.user_id, 
       t1.donation_id, 
       t1.payment_status, 
       t1.pending_reason,
       t1.txn_id, 
       t2.sum_gross, 
       t1.amount
from the_table t1
join (
   select max(donation_id) as max_id, 
          sum(mc_gross) as sum_gross,
          user_id
   from the_table
   group by user_id
) t2 on t2.max_id = t1.donation_id
    and t2.user_id = t1.user_id;
于 2012-09-27T19:45:08.573 に答える
0

これを試して:

select T2.USER_ID, T2.TOTAL_MC_GROSS, T2.LAST_DONATION_ID, 
T1.PAYMENT_STATUS, T1.TXN_ID, T1.PENDING_REASON   from
MY_TABLE T1 inner join
(
select USER_ID, SUM(MC_GROSS) AS TOTAL_MC_GROSS , 
MAX(DONATION_ID) AS LAST_DONATION_ID
from MY_TABLE 
group by USER_ID
) 
T2
on T1.DONATION_ID = T2.DONATION_ID
于 2012-09-27T20:19:01.750 に答える