sql >> Database >  >> RDS >> Mysql

php / SQL - print veel woorden 4 keer tussen elke 4 namen met veel voorwaarden

Ik heb je vorige post gelezen en deze. Als ik het idee begrijp, is het basisprincipe dat je teams en spelers hebt en dat je gegevens wilt weergeven in bepaalde gestandaardiseerde groepen (bij wijze van spreken).

Welnu, er is een constant gegeven waarmee je altijd vergelijkt en dat is de grootte van het team.

Wat ik zou doen is een subquery maken die het team groepeert met het aantal spelers en dit op de een of andere manier als volgt gebruiken:

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

Wanneer je de resultatenset in PHP uitlezingt, kun je een functie bouwen, zoals:

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

?>

De row_id . gebruiken uit de resultatenset kun je zien wanneer een team begint en eindigt.

Dus als het de rijen uitspuugt, kan het zoiets zijn als:"

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

}

?>

Ik hoop dat ik je vraag goed heb gesteld. Ik ben er snel mee weg, maar ik dacht dat het zou helpen!




  1. Vergelijkbare nummerpatronen zoeken in de tabel

  2. Identiteitskolomwaarde springt plotseling naar 1001 in sql-server

  3. Enum datatype versus tabel met gegevens in MySQL?

  4. Hoe een externe sleutelbeperking te maken met ON UPDATE CASCADE in SQL Server - SQL Server / TSQL-zelfstudie, deel 79