sql >> Databáze >  >> RDS >> Mysql

php / SQL - vytisknout mnoho slov 4krát mezi každé 4 názvy s mnoha podmínkami

Četl jsem tvůj předchozí příspěvek a tento. Pokud mám představu, základní věc je, že máte týmy a hráče a chcete zobrazovat data v určitých standardizovaných seskupení (takříkajíc).

No, existuje konstantní datum, se kterým se vždy srovnáváte, což je velikost týmu.

Udělal bych poddotaz, který seskupí tým podle počtu hráčů a použije to nějakým způsobem následovně:

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

Při opakování sady výsledků v PHP můžete vytvořit nějakou funkci, například:

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

?>

Pomocí row_id ze sady výsledků můžete vidět, kdy tým začíná a kdy končí.

Takže když to vyplivuje řádky, může to být něco jako:"

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

}

?>

Doufám, že jsem vaši otázku pochopil správně. Rychle to zahazuji, ale myslel jsem, že to pomůže!




  1. CakePHP Model Query Return Data Formation

  2. Upozornění:mysqli_num_rows() očekává přesně 1 parametr, 2 dané | mysql |mysqli

  3. Jak získat včerejší datum v SQLite

  4. Jak programově generovat DDL z databáze Oracle?