php / SQL – печатает много слов 4 раза между каждыми 4 именами со многими условиями

Я задал этот вопрос, прежде чем здесь, в этом разделе, пожалуйста, внимательно прочитайте его. sql-print-many-word-between-every-columns-with-many-conditions

но разница между этим вопросом и предыдущим, что я хочу сделать коллективными игроками или группой игроков внутри многих имен клубов, например:

El Ahly клубе El Ahly есть 12 игроков, которые хотят разбить его на 3 teams Каждая team имеет 4 игрока, которые я хочу подсчитать, сколько team внутри каждого названия клубов затем помещает их в неизменяемые числа (группы). 4 8 16 32 64 128 256 основе по количеству teams печатайте **ANY WORD** между ними что-то вроде этого после данных фильтра с помощью select full_name,club_name from players where y_of_birth=2000 желаемый результат должен быть таким:

ОБНОВЛЕНО:

 +----+------+---------------------+ | full_name | club_name | +--------------+------------------+ | Ahmed Sayed | El Ahly | +--------------+------------------+ | Kareem Gaber | El Ahly | +--------------+------------------+ | Maher Zein | El Ahly | +--------------+------------------+ | Mohab Saeed | El Ahly | +----+------+--+------------------+ | ahmed shawky | Petroget | +--------------+------------------+ | shaker ali | Petroget | +--------------+------------------+ | omar Saed | Petroget | +--------------+------------------+ | moataz Gamal | Petroget | +------+-------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | husein mazen | Cocorico | +--------------+------------------+ | hassan maged | Cocorico | +--------------+------------------+ | maged ahmoud | Cocorico | +--------------+------------------+ | zakareya gad | Cocorico | +--------------+------------------+ | Kamal saber | El Ahly | +--------------+------------------+ | gamel kamel | El Ahly | +--------------+------------------+ | omar galal | El Ahly | +--------------+------------------+ | Kamal saber | El Ahly | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | khaled zein | Petroget | +--------------+------------------+ | shady sameer | Petroget | +--------------+------------------+ | wahed mahmoud| Petroget | +--------------+------------------+ | samy shahen | Petroget | +----+------+--+------------------+ | Mohamed gad | El Ahly | +----+------+--+------------------+ | ehab zeyad | El Ahly | +----+---------+------------------+ | moaz maged | El Ahly | +--------------+------------------+ | mazen mahmod | El Ahly | +--------------+------------------+ 

в этом примере есть 2 groups of **ANY WORD** потому что их group 6 и помещает их в 8 неизменяемых групп, которые найдены в 4 или 8 или 16 или 32 или 64 или 128 или 256 числах … и не смежны между ними 2 **ANY WORD** или два соседних между club_name

Примеры :

4 игрока в качестве одного игрока

если результат после select full_name,club_name from players where y_of_birth=200012 игроков, это означает 12 players = 3 groups потому что каждая группа имеет 4 игрока следующего шага печати **ANY WORD** 4 раза (примечание: **ANY WORD** является одной из этих групп) между 3 группами, поэтому выход будет таким:

 +----+------+---------------------+ | full_name | club_name | +--------------+------------------+ | Ahmed Sayed | El Ahly | +--------------+------------------+ | Kareem Gaber | El Ahly | +--------------+------------------+ | Maher Zein | El Ahly | +--------------+------------------+ | Mohab Saeed | El Ahly | +----+------+--+------------------+ | ahmed shawky | Petroget | +--------------+------------------+ | shaker ali | Petroget | +--------------+------------------+ | omar Saed | Petroget | +--------------+------------------+ | moataz Gamal | Petroget | +------+-------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | Kamal saber | El Ahly | +--------------+------------------+ | gamel kamel | El Ahly | +--------------+------------------+ | omar galal | El Ahly | +--------------+------------------+ | Kamal saber | El Ahly | +--------------+------------------+ 

Вывод :

4 8 16 32 64 128 256 являются неизменяемыми группами

group 4 должна заполнить 16 игроков **ANY WORD** без смежного между ними что-то вроде этого:

 +----+------+---------------------+ | full_name | club_name | +--------------+------------------+ | Ahmed Sayed | El Ahly | +--------------+------------------+ | Kareem Gaber | El Ahly | +--------------+------------------+ | Maher Zein | El Ahly | +--------------+------------------+ | Mohab Saeed | El Ahly | +----+------+--+------------------+ | ahmed shawky | Petroget | +--------------+------------------+ | shaker ali | Petroget | +--------------+------------------+ | omar Saed | Petroget | +--------------+------------------+ | moataz Gamal | Petroget | +------+-------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | Kamal saber | El Ahly | +--------------+------------------+ | gamel kamel | El Ahly | +--------------+------------------+ | omar galal | El Ahly | +--------------+------------------+ | Kamal saber | El Ahly | +--------------+------------------+ 

group 8 должна заполнить 32 игрока **ANY WORD** без смежного между ними чего-то вроде этого:

 +----+------+---------------------+ | full_name | club_name | +--------------+------------------+ | Ahmed Sayed | El Ahly | +--------------+------------------+ | Kareem Gaber | El Ahly | +--------------+------------------+ | Maher Zein | El Ahly | +--------------+------------------+ | Mohab Saeed | El Ahly | +----+------+--+------------------+ | ahmed shawky | Petroget | +--------------+------------------+ | shaker ali | Petroget | +--------------+------------------+ | omar Saed | Petroget | +--------------+------------------+ | moataz Gamal | Petroget | +------+-------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | husein mazen | Cocorico | +--------------+------------------+ | hassan maged | Cocorico | +--------------+------------------+ | maged ahmoud | Cocorico | +--------------+------------------+ | zakareya gad | Cocorico | +--------------+------------------+ | Kamal saber | El Ahly | +--------------+------------------+ | gamel kamel | El Ahly | +--------------+------------------+ | omar galal | El Ahly | +--------------+------------------+ | Kamal saber | El Ahly | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | **ANY WORD** | | +--------------+------------------+ | khaled zein | Petroget | +--------------+------------------+ | shady sameer | Petroget | +--------------+------------------+ | wahed mahmoud| Petroget | +--------------+------------------+ | samy shahen | Petroget | +----+------+--+------------------+ | Mohamed gad | El Ahly | +----+------+--+------------------+ | ehab zeyad | El Ahly | +----+---------+------------------+ | moaz maged | El Ahly | +--------------+------------------+ | mazen mahmod | El Ahly | +--------------+------------------+ 

и так далее с

group 16 group 32 group 64 group 128 group 256

Редакция:

У меня есть этот запрос от Gordon Linoff

 select p.* from (select p.*, (@rn := if(@c = club_name, @rn + 1, if(@c := club_name, 1, 1) ) ) as seqnum from players p cross join (select @c := '', @rn := 0) params order by club_name ) p order by floor((seqnum - 1) / 4), club_name 

после объединения с фильтрацией данных:

 select p.* from (select p.full_name,club_name, (@rn := if(@c = club_name, @rn + 1, if(@c := club_name, 1, 1) ) ) as seqnum from players p cross join (select @c := '', @rn := 0) params WHERE `y_of_birth` LIKE N'%2000%' order by club_name ) p order by floor((seqnum - 1) / 4), club_name 

выводят что-то вроде этого:

 +----+------+---------------------+ | full_name | club_name | +--------------+------------------+ | Ahmed Sayed | El Ahly | +--------------+------------------+ | Kareem Gaber | El Ahly | +--------------+------------------+ | Maher Zein | El Ahly | +--------------+------------------+ | Mohab Saeed | El Ahly | +----+------+--+------------------+ | kamal mado | Cocorico | +--------------+------------------+ | hossam magdy | Cocorico | +--------------+------------------+ | sayed ammar | Cocorico | +--------------+------------------+ | karem gad | Cocorico | +--------------+------------------+ | Mohamed gad | El Ahly | +----+------+--+------------------+ | ehab zeyad | El Ahly | +----+---------+------------------+ | moaz maged | El Ahly | +--------------+------------------+ | mazen mahmod | El Ahly | +--------------+------------------+ | shaker ali | Petroget | +--------------+------------------+ | omar Saed | Petroget | +--------------+------------------+ | moataz Gamal | Petroget | +--------------+------------------+ | gamael zayed | Petroget | +--------------+------------------+ | husein mazen | Cocorico | +--------------+------------------+ | mazen kamal | Cocorico | +--------------+------------------+ | maged ahmoud | Cocorico | +--------------+------------------+ | mesho kareem | Cocorico | +--------------+------------------+ | mano mazen | Petroget | +--------------+------------------+ | shady srour | Petroget | +--------------+------------------+ | mamdouh gamal| Petroget | +--------------+------------------+ | khaled zein | Petroget | +--------------+------------------+ | husein mazen | Cocorico | +--------------+------------------+ | hassan maged | Cocorico | +--------------+------------------+ | maged ahmoud | Cocorico | +--------------+------------------+ | zakareya gad | Cocorico | +--------------+------------------+ | shady sameer | Petroget | +--------------+------------------+ | wahed mahmoud| Petroget | +--------------+------------------+ | samy shahen | Petroget | +----+------+--+------------------+ | abdo samy | Petroget | +----+------+--+------------------+ 

любая помощь будет оценена!

Я прочитал ваш предыдущий пост и этот. Если я получу эту идею, основное дело в том, что у вас есть команды, и у вас есть игроки, и вы хотите отображать данные в определенных стандартизованных группах (так сказать).

Ну, есть постоянная привязка, что вы всегда сравниваете с размером команды.

То, что я сделал бы, это сделать подзапрос, который группирует команду со счетом игроков и использует это в некотором роде следующим образом:

 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 

Когда вы эхо из результирующего набора в PHP, вы можете создать некоторую функцию, такую ​​как:

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

Используя row_id из набора результатов, вы можете видеть, когда команда начинает и заканчивается.

Поэтому, когда он выплевывает строки, это может быть что-то вроде:

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

Надеюсь, я правильно понял ваш вопрос. Я быстро избавляюсь от этого, но я думал, что это поможет!