0

私は2つのテーブルを持っています

表:取引

id . user_id . amount . status
1 - - 100 -- --- 500 - ----- 1
2 - - 100 -- --- 100 - ----- 0
3 - - 110 -- --- 200 - ----- 1

表:キャンペーン

id . user_id . bid . status . budget . expense . size
1 -- 100 ---- 80  --- 1 ------- 200 ------ 200 ---- 5 --
2 -- 109 ---- 75  --- 1 ------- 050 ------ 030 ---- 2 --
3 -- 100 ---- 65  --- 1 ------- 700 ------ 065 ---- 2 --
4 -- 107 ---- 77  --- 0 ------- 020 ------ 020 ---- 2 --
5 -- 90 ----- 87  --- 1 ------- 120 ------ 090 ---- 7 --

php と mysql を使用したフィルターの後に、campaign.id が必要です

条件: ユーザーから受け取った合計金額/トランザクションが、ユーザーの合計費用よりも多い場合。Money も承認済みのお金です (1 = 承認済み、0 = 保留中)。キャンペーンは手段 1 にあり、誰が最高額を入札したか

(sum(transaction.amount) WHERE transaction.status = 1 of that any user) > sum(campaign.expense of that user)

入札 = 最大 (入札)

キャンプ状態 = 1

1 ステップ ソリューション

 mysql_query("SELECT campaign.* FROM campaign c,transaction t  
            WHERE budget>expense AND status='1' AND size='2' 
            ON c.user_id=t.user_id 
            HAVING SUM (CASE WHEN transaction.status=1 THEN transaction.amount ELSE 0 END) > SUM(campaign.expense)"));

動作していません

または、3つのステップで解決策がある場合-

最初のステップ

   mysql_query("SELECT id,user_id FROM campaign 
        WHERE budget>expense AND status='1' AND size='2'")

2段目

  keep id,user_id of 1st step WHERE SUM(transaction.amount status=1)
             > SUM(campaign.expense)

3番目のステップ

  mysql_query("SELECT id,user_id FROM campaign 
        WHERE step2 satisfied")

助けてください、解決したら寝ます

4

2 に答える 2

0

これを試して:

SELECT camps.id,camps.bid FROM camps c JOIN tran t  ON c.user_id=t.user_id 
    HAVING SUM (CASE WHEN tran.status=1 THEN tran.amount ELSE 0 END)
       > SUM(CASE WHEN camp.status= 1 THEN camps.expense ELSE 0 END)
于 2013-10-26T10:11:04.083 に答える
0

私が理解していることから、次のことを達成したいと考えています。

SELECT 
    c.*
FROM campaign c
JOIN (SELECT
        SUM(amount) AS summed
    FROM transaction t
    WHERE status = 1
) temp t
WHERE c.status = 1
HAVING t.summed > SUM(c.expense)
ORDER BY c.bid DESC
LIMIT 1
于 2013-10-26T10:23:17.190 に答える