Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać zmiennej użytkownika jako licznika z zapytaniami sprzężenia wewnętrznego, które zawierają instrukcję GROUP BY?

Nie jestem pewien, jak Twój wynik jest powiązany z matches stół,

możesz dodać ponownie WHERE / INNER JOIN klauzula, jeśli potrzebujesz.

Oto link do skrzypiec

i ostatnia iteracja zgodnie z Twoimi komentarzami:

A oto zapytanie:

SET @user:=0;

select  d.user_id,
        sum(case when d.result = 1 then 1 else 0 end) as winnings, 
        sum(case when d.result = 2 then 1 else 0 end) as loses,
        sum(case when d.result = 1 then d.odd_value else 0 end) as points,
        f.bonus
FROM odds d
    INNER JOIN
    (
      SELECT  
            user_id,SUM(bonus) AS bonus
        FROM
        (
          SELECT 
            user_id,
            CASE WHEN result=1 and @counter<5 AND @user=user_id THEN @counter:[email protected]+1 

                 WHEN result=1 and @counter=5 AND @user=user_id THEN @counter:=1 

                 WHEN result=1 and @user<>user_id THEN @counter:=1 
                 ELSE 
                 @counter:=0 
            END AS F1,
            @user:=user_id,
            CASE WHEN @counter=5 THEN 1 ELSE 0 END AS bonus 
          FROM odds o
          ORDER BY user_id , match_id         
        ) Temp
        group by user_id
        )as f on f.user_id = d.user_id
      group by d.user_id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UWAGA:Nawiązywanie połączenia SSL bez weryfikacji tożsamości serwera nie jest zalecane

  2. Docker:nie można połączyć Spring Boot i MYSQL

  3. zdobądź kolejne rekordy w mysql

  4. MySQL Order według liczby, wartości null trwają

  5. Zaawansowane archiwum wiadomości Lata/Miesiąc przy użyciu PHP MySql