sql >> Databasteknik >  >> RDS >> Mysql

php / SQL - skriv ut många ord fyra gånger mellan vart fjärde namn med många villkor

Jag läste ditt förra inlägg och det här. Om jag förstår idén är det grundläggande att du har lag och du har spelare och du vill visa data i vissa standardiserade grupperingar (så att säga).

Tja, det finns ett konstant datum som du alltid jämför med vilket är storleken på laget.

Vad jag skulle göra är att göra en underfråga som grupperar laget med ett antal spelare och använder detta på något sätt enligt följande:

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 upprepar resultatuppsättningen i PHP kan du bygga någon funktion 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.
}

?>

Använda row_id från resultatuppsättningen kan du se när ett lag startar och slutar.

Så när den spottar ut raderna kan det vara något 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']);
}

}

?>

Jag hoppas att jag fick rätt på din fråga. Jag kör på det här snabbt men jag trodde att det skulle hjälpa!




  1. Hur förhindrar man att utvalda found_rows går sönder under tävlingsförhållanden?

  2. ORA-01017 Oracle-fellösningstips

  3. Lokal Firebird db replikering/synkronisering till online db

  4. Pivotera en tabell och visa n ordnade tidsserier