sql >> Base de Datos >  >> RDS >> Mysql

php/SQL:imprime muchas palabras 4 veces entre cada 4 nombres con muchas condiciones

Leí tu mensaje anterior y este. Si entiendo la idea, lo básico es que tienes equipos y jugadores y quieres mostrar datos en ciertos grupos estandarizados (por así decirlo).

Bueno, hay un dato constante que siempre estás comparando con el cual es el tamaño del equipo.

Lo que haría es hacer una subconsulta que agrupe al equipo con un conteo de jugadores y usar esto de alguna manera de la siguiente manera:

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

Al hacer eco del conjunto de resultados en PHP, puede crear alguna función 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 el row_id a partir del conjunto de resultados, puede ver cuándo comienza y termina un equipo.

Entonces, cuando está escupiendo las filas, podría 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 haber acertado con tu pregunta. ¡Estoy corriendo rápido, pero pensé que ayudaría!