Я задал этот вопрос, прежде чем здесь, в этом разделе, пожалуйста, внимательно прочитайте его. 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=2000
– 12
игроков, это означает 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']); } } ?>
Надеюсь, я правильно понял ваш вопрос. Я быстро избавляюсь от этого, но я думал, что это поможет!