sql >> Database teknologi >  >> RDS >> Mysql

Laravel 5.3 distinkt tæller, bruger veltalende i stedet for Query Builder

Den forespørgsel, du laver, er ikke korrekt til brug, du kan se forskellen.

select count(*) as aggregate from game_results 
where (school_id is null and season_id = '1') 
group by user_id order by user_id asc;

returnerer to rækker

aggregate
1,
2

Veltalende vælger først og returnerer, hvilket er 1.

select count(*) as aggregate from game_results 
where (school_id is null and season_id = '1') 
group by user_id order by user_id desc;

vil returnere rækker som

agrregate
2,
1

Veltalende vil resultere 2 i dette tilfælde.

Det, du ønsker, er antallet af (forespørgsel), som igen bliver 2.

Får du det? det, du ønsker, er DISTINKT

$usersWithAnswersCount = GameResult::where([
    'school_id' => null,
    'season_id' => $this->season->id 
])
->distinct('user_id')
->count();


  1. Samlet strengforbindelse i Oracle 10g

  2. PostgreSQl-funktionen returnerer flere dynamiske resultatsæt

  3. Postgres VÆLG hvor WHERE er UUID eller streng

  4. Skal jeg virkelig bruge SET XACT_ABORT ON?