2016-06-19 22 views
0

Ich habe eine harte Zeit, eine Summe hinzufügen (naja, wirklich ein Unterschied) in einer Spalte, die in einer Tabelle ist, die ich in einer SELECT JOIN-Anweisung erstellt habe. Lassen Sie mich zeigen, was ich (Kurzform), und dann erklären:PHP MySQL Summe Spalte der verbundenen Tabelle pro Zeile Werte

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 

So zeigt diese Tabelle eine Wett Geschichte von einem Benutzer, auf der Website, die Teams beteiligt, Wette und die Chancen des Spiels. Ich hatte diese Tabelle durch eine ziemlich lange Abfrage erstellt, die eine Benutzer-Tabelle, eine Wett-Site-Tabelle, eine Spieltabelle usw. über JOIN/ON kombinierte.

Derzeit haben wir 10 Wett-Websites in unserer Wett-Site-Tabelle, und wir verfolgen/pro Benutzer, was ihre Stellung auf jeder Website ist. So , auf Ridges Profilseite, ich habe auch eine Tabelle:

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

Dieses Fragezeichen ist, wo ich meine Schwierigkeiten habe. Sie sehen, ich versuche, eine Summe aller Wetten, die in der oberen Tabelle aufgelistet sind, als von der Wettseite und dem Benutzer übereinstimmend zu nehmen. Über die JOIN-Anweisung (und eine $ _GET-Variable) kann ich nur Informationen für einen bestimmten Nutzer und eine bestimmte Wettseite auswählen. Aber ich kann den SUM nicht richtig funktionieren lassen. Dies ist, wie ich es möchte arbeiten:

Die Prolongation Rest ist eine Berechnung des ((Bonus * Rollover) - Summe (Einsätze)) für einen bestimmten Ort.

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 

Dies ist, was ich versucht habe:

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; 

aber das Problem ist, dass es unabhängig von der gleichen Überschlagsmenge berechnet, was die Wettseite ist, so sind sie alle die gleiche wie oben Wett-Website von LeoVegas. Weiß jemand, wie ich eine SUMME benutzen kann, um eine Wettseite zu benutzen, die in dieser $ Reihe aufgeführt ist? Ich weiß (na ja, nicht sicher, woher es sonst kommen würde), der Fehler kommt von meiner SUM WHERE-Klausel, aber ich bin mir nicht sicher, wie ich die spezifische Wettsite sonst noch summieren könnte.

Dank

Antwort

0

Ich glaube, Sie virtuelle Spalte ist wegen

für den gleichen Standort und ID generiert wird die unter

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

Versuchen ..

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

Danke für die Antwort ... leider funktioniert es nicht richtig. Es findet keine korrekten Informationen und ich glaube, das liegt daran, dass die innere select-Abfrage die $ _GET-Variablen von $ id und $ betsite benötigt. Ich versuche zu sehen, ob ich von deiner Logik der 'inneren' Aliase abarbeiten kann, aber ich muss es noch damit arbeiten lassen. –

Verwandte Themen