2016-06-19 28 views
0

SELECT JOIN文で作成したテーブルにあるカラムに合計(まあまあ実際は違い)を追加するのは苦労しています。私は(短い形式)持っているものをお見せしましょう、次に説明しますPHP MySQLの行合計値の結合テーブル

User Name Betting Site Home Team Away Team Wager Odds 
Ridge  LeoVegas  Molde  Tromso  1000 2.20 
Ridge  Nordic Bet  Molde  Tromso  3000 1.60 
Ridge  LeoVegas  Aalesund Rosenborg 4000 1.30 
Simon  Comeon   Aalesund Rosenborg 2000 1.40 

ので、このテーブルは、サイト上で、関係するチーム、賭け金とゲームのオッズ、ユーザーが賭け履歴を示します。私は、JOIN/ONを使って、ユーザーテーブル、サイトテーブル、ゲームテーブルなどを組み合わせた非常に長いクエリを通じてこのテーブルを作成しました。

現在、私たちは賭博サイトテーブルに10の賭けサイトを持っており、各サイトの立場がどのようなものであるかを追跡しています。 ので、リッジのプロフィールページに、私はまた、テーブルを持っている:

Betting Site Deposit  Bonus  Rollover Rollover Remaining Days 
LeoVegas  4000  4000  10     ?   30 
Nordic Bet  4000  4000  6     ?   30 
Comeon   3000  3000  12     ?   90 

私は私の難しさを持っていますここ疑問符があります。あなたは、賭けのサイトとユーザーに合ったトップテーブルに記載されているすべての賭け金の合計を取ろうとしています。 JOINステートメント(と$ _GET変数)を使用して、特定のユーザーと特定の賭博サイトの情報のみを選択できます。しかし、SUMを正しく動作させることができません。これは私が動作させたい方法です:

ロールオーバー残量は、特定のサイトの((ボーナス*ロールオーバー) - 合計(賭))の計算です。

SELECT 
b.betting_site_name, 
b.deposit, 
b.bonus, 
b.odds, 
b.rollover, 
b.days, 
u.wager, 
(SELECT 
    SUM(wager) AS 'Total Risk' 
    FROM userbets AS ub 
    JOIN users AS u ON ub.userid = u.id 
    JOIN bonuses AS b ON ub.siteid = b.id 
    WHERE u.id = $id AND betting_site_name='$betsite') AS 'Total Rollover' 
FROM bonuses AS b 
LEFT JOIN userbets AS u ON u.siteid = b.id 
LEFT JOIN users ON u.userid = users.id 
WHERE users.id=$id AND betting_site_name='$betsite' 
GROUP BY b.id; 

が、問題は、それは関係なく、賭けサイトが何であるか、同じロールオーバー量を算出しないということですので、彼らはすべてのトップと同じです:

Ridge Robinson's Status 
Betting Site Deposit  Bonus  Rollover Rollover Remaining Days 
LeoVegas  4000  4000  10   35000 (*40000-5000*)30 
Nordic Bet  4000  4000  6   21000 (*24000-3000*)30 
Comeon   3000  3000  12   36000 (*36000-0*) 90 

このは、私が試したものですLeoVegasのベットサイト。誰かが、その$行に記載された賭けサイトを使用するためにSUMをどのように使用することができるか知っていますか?私は(他にどこから来るのかはっきりしていませんが)ミスは私のSUM WHERE句から来ていますが、それ以外の特定の賭けサイトをどのように合計するかはわかりません。

おかげ

答えて

0

私は..あなたは、仮想列は、同じサイトとidための

WHERE u.id = $id AND betting_site_name='$betsite') AS 'Total Rollover'

のために生成されている以下試してみてください答えを

SELECT 
b.betting_site_name, 
b.deposit, 
b.bonus, 
b.odds, 
b.rollover, 
b.days, 
u.wager, 
(SELECT 
    SUM(wager) AS 'Total Risk' 
    FROM userbets AS inner_ub 
    JOIN users AS inner_u ON inner_ub.userid = inner_u.id 
    JOIN bonuses AS inner_b ON inner_ub.siteid = inner_b.id 
    WHERE inner_u.id = u.id AND inner_b.betting_site_name=b.betting_site_name) AS 'Total Rollover' 
FROM bonuses AS b 
LEFT JOIN userbets AS u ON u.siteid = b.id 
LEFT JOIN users ON u.userid = users.id 
WHERE users.id=$id AND betting_site_name='$betsite' 
GROUP BY b.id; 
+0

のおかげだと思います残念ながら、正しく動作しません。これは正しい情報を見つけることができません。内側のselectクエリに$ idと$ betsiteの$ _GET変数が必要なためです。私はあなたの 'inner_'エイリアスのロジックを取り除くことができるかどうかを見極めようとしていますが、まだこれと一緒に動作させる必要があります。 –