sql >> Database >  >> RDS >> Mysql

Laravel 5.3 verschillende tellingen, met welsprekend in plaats van Query Builder

De query die u maakt, is niet correct voor gebruik, u kunt het verschil zien.

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;

geeft twee rijen terug

aggregate
1,
2

Welsprekend kiest eerst en keert terug, dat is 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;

zal rijen retourneren als

agrregate
2,
1

Welsprekend zal in dit geval 2 opleveren.

Wat je wilt is het aantal (query) dat weer 2 zal zijn.

Het krijgen? wat je wilt is DISTINCT

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


  1. Hoe de kolomnaam van het resultaat van een minste functie te krijgen?

  2. Hoe te testen of een MySQL-query succesvol was in het wijzigen van databasetabelgegevens?

  3. MYSQL-volgorde op zowel oplopend als aflopend sorteren

  4. SQL/Oracle:wanneer indexen op meerdere kolommen kunnen worden gebruikt