J'ai une requête LARAVEL 5.7
$captains = DB::table('pickup_results') ->select(DB::raw("playerID"), DB::raw("COUNT(CASE WHEN gameResult = 'Win' THEN 1 END) AS wins"), DB::raw("COUNT(CASE WHEN gameResult = 'Loss' THEN 1 END) AS loss")) ->where('pickOrder', '=', 0) ->where('playerID', '=', $playerID) ->groupBy('playerID') ->orderBy('wins','DESC') ->get();
3 Réponses :
Il vous donnera gagne code> et
perte code> dans votre résultat. Il suffit d'ajouter un
sinon code> dans votre cas code> et mettez une condition de comptage supplémentaire pour
Dessine code>. Ajoutez plus de 1
OrderBy code> pour une meilleure représentation des résultats.
$captains = DB::table('pickup_results')
->select(DB::raw("playerID"),
DB::raw("SUM(CASE WHEN gameResult = 'Win' THEN 1 ELSE 0 END) AS wins"),
DB::raw("SUM(CASE WHEN gameResult = 'Loss' THEN 1 ELSE 0 END) AS loss")),
DB::raw("SUM(CASE WHEN gameResult != 'Win' and gameResult != 'Loss' THEN 1 ELSE 0 END) AS draws"))
->where('pickOrder', '=', 0)
->where('playerID', '=', $playerID)
->groupBy('playerID')
->orderBy('wins','DESC')
->orderBy('draws','DESC')
->orderBy('loss','ASC')
->get();
Vous pouvez utiliser ou vous pouvez utiliser Cela fonctionne parce que somme () code> au lieu de
compteur () code> et ajoutez un
else 0 code> à la requête. Exemple pour la première occurrence:
coalesce (requête, 0) code>: p>
compte () code> renvoie
null code> si tous les éléments comptés sont
null code>. p> p>
Quelle est l'erreur que vous obtenez? Et quel système de base de données utilisez-vous autrement? Mysql?
En supposant qu'il n'y ait pas de rangée dans la table si le joueur n'a pas eu de victoire ou une perte, votre requête ne pourra jamais renvoyer aucun résultat.
Une option (en supposant que vous avoir un Alternativement, car vous utilisez lecteurs cod> table) consisterait à interroger la table code> lecteurs de code> puis rejoindre le
pickup_results code>: p>
get () code> avec votre requête Une collection sera renvoyée quel que soit les résultats afin que vous puissiez chaîner sur le QUEMTEMENT () Méthode à la place: P>
$captains = DB::table('pickup_results')
->select('playerID',
DB::raw("COUNT(CASE WHEN gameResult = 'Win' THEN 1 END) AS wins"),
DB::raw("COUNT(CASE WHEN gameResult = 'Loss' THEN 1 END) AS loss"))
->where('pickOrder', 0)
->where('playerID', $playerID)
->groupBy('playerID')
->orderBy('wins', 'DESC')
->get()
->whenEmpty(function ($items) use ($playerID) {
return $items->push((object)[
'playerID' => $playerID,
'wins' => 0,
'loss' => 0,
]);
});
Avez-vous un modèle éloquent configuré pour
pickup_results code> et si vous avez ainsi une relation configurée entre elle et un modèle code> code>?
Y a-t-il des lignes dans la table pour eux du tout s'ils n'ont pas eu de victoire ou de perte?