Mysql
 sql >> Base de données >  >> RDS >> Mysql

php / SQL - imprime plusieurs mots 4 fois entre tous les 4 noms avec de nombreuses conditions

J'ai lu ton message précédent et celui-ci. Si je comprends bien, la chose de base est que vous avez des équipes et des joueurs et que vous souhaitez afficher les données dans certains groupes standardisés (pour ainsi dire).

Eh bien, il y a une donnée constante que vous comparez toujours à laquelle est la taille de l'équipe.

Ce que je ferais, c'est créer une sous-requête qui regroupe l'équipe avec un nombre de joueurs et l'utiliser d'une manière comme suit :

select t.*
       , x.total_players
       -- , row_number() over(order by t.team_name) row_id
from team_table t
    join (
          select team_id
                , count(1) total_playerss
          from team_table 
          group by team_id
         ) x on x.team_id = t.team_id
order by t.team_name

Lors de l'écho du jeu de résultats en PHP, vous pouvez créer des fonctions telles que :

<?php

function add_some_word($playerCount) {

if ($playerCount >4 && $playerCount <= 8) {
echo '*** SOME WORD***';
echo '*** SOME WORD***';
echo '*** SOME WORD***';
}
else if ($playerCount >4 && $playerCount <= 8) {
echo '*** SOME WORD***';
echo '*** SOME WORD***';
}
// etc.
}

?>

Utilisation du row_id à partir de l'ensemble de résultats, vous pouvez voir quand une équipe commence et se termine.

Ainsi, lorsqu'il recrache les lignes, cela pourrait ressembler à : "

<?php

$currentTeamName = "";

while ($row = pg_fetch_array($result,null,PGSQL_ASSOC)) {
// echo data you would normally send out

if ($currentTeamName != $row['team_name']) {
add_some_word($row['total_players']);
}

}

?>

J'espère avoir bien compris votre question. Je me dépêche de faire ça rapidement mais j'ai pensé que ça aiderait !