Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

php / SQL - imprima muitas palavras 4 vezes entre cada 4 nomes com muitas condições


Li seu post anterior e este. Se eu entendi, o básico é que você tem equipes e jogadores e deseja exibir dados em certos agrupamentos padronizados (por assim dizer).

Bem, há um dado constante que você está sempre comparando com o qual é o tamanho da equipe.

O que eu faria é fazer uma subconsulta que agrupasse o time com uma contagem de jogadores e usaria isso de alguma forma da seguinte forma:
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

Ao ecoar o conjunto de resultados em PHP, você pode construir algumas funções como:
<?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.
}

?>

Usando o row_id a partir do conjunto de resultados, você pode ver quando uma equipe começa e termina.

Então, quando está cuspindo as linhas, pode ser algo como:"
<?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']);
}

}

?>

Espero ter acertado sua pergunta. Estou fazendo isso rápido, mas achei que ajudaria!