sql >> Database teknologi >  >> RDS >> Mysql

php / SQL - udskriv mange ord 4 gange mellem hver 4 navne med mange betingelser

Jeg læste dit tidligere indlæg og dette. Hvis jeg får ideen, er det grundlæggende, at du har hold, og du har spillere, og du vil vise data i visse standardiserede grupperinger (så at sige).

Nå, der er et konstant datum, som du altid sammenligner med, hvilket er størrelsen på holdet.

Det, jeg ville gøre, er at lave en underforespørgsel, der grupperer holdet med et antal spillere og bruger dette på en eller anden måde som følger:

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

Når du gentager resultatsættet i PHP, kan du bygge nogle funktioner såsom:

<?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.
}

?>

Brug af row_id fra resultatsættet kan du se, hvornår et hold starter og slutter.

Så når den spytter rækkerne ud, kan det være noget i stil med:"

<?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']);
}

}

?>

Jeg håber, jeg har fået rigtigt dit spørgsmål. Jeg skynder mig det her, men jeg troede, det ville hjælpe!




  1. Docker MySQL - kan ikke oprette forbindelse fra Spring Boot-appen til MySQL-databasen

  2. Hvordan pg_typeof() virker i PostgreSQL

  3. Introduktion til PL/SQL-masseindsamling i Oracle-databasen

  4. Sådan opretter du Facebook som venner-system i php med mysql