Histórico Escolar com php e mysql

Boa tarde!
Preciso exibir um histórico escolar no seguinte modelo:
Disciplinas | fase 1 | fase 2 | fase 3
português | 8 | 7 | 5
matemática | 9,5 | 7 | 8
história | 10 | 7 | 9

tenho as seguintes tabelas:

aluno
disciplina (tem id_aluno)
fase1 (tem id_disciplina e id_aluno)
fase2 (tem id_disciplina e id_aluno)
fase3 (tem id_disciplina e id_aluno)
Preciso que as notas das fases apareça em suas respectiva colunas.

tentei com UNION, mas as notas ficam na sequencia uma em baixo da outra.

Estou usando PHP e banco MYSQL.

Nao precisa se prender ao select. Pega o resultado e monta a tabela via php do jeito que quiser. As informações voce já tem. Além das linhas, é só montar a lógica de preenchimento do header. Pode usar por exemplo a funcao array_unique() pra nao repetir as disciplinas, fases e alunos. Os valores vem do cruzamento dessas informações.

Em resumo, retorna os dados necessários do banco como já está fazendo, após isso monta a lógica pra escrever a tabela no formato que quiser.


Olha na imagem.
Ja tenho o histórico com a consulta, porem as notas vem na sequencia . preciso que as notas de segunda fase passe para a coluna de segunda fase somente as noras, as disciplinas permaneçam onde estao.

Cria uma funcao que retorne a nota, passando como parametro aluno, disciplina, fase ou o que for necessário pra achar a nota específica.

Pode usar filter pra buscar a nota no seu “arrayzão” dos dados resultantes do banco de dados.

Boa tarde colegas vou tentar explicar melhor.

Ja tenho o sistema todo funcionando com cadastros, lançamento de notas, ficha individual com notas, boletim do aluno.
Eu poderia aproveitar e fazer o histórico parecido com o boletim, só que o boletim uso apenas uma tabela que contem campos como primeira,segunda,recuperação,etc, dai fica fácil a consulta uma coluna ao lado da outra, no caso do histórico tenho que puxar informações de três tabelas e é ai que travei!!!
a imagem que coloquei no post estou usando o UNION
más as disciplinas ficam em sequencia so que as notas tem que ir para a proxima coluna depois da oitava disciplina.
Posso tentar uma quebra de coluna que apos a consulta retornar 8 linhas as próximas notas vá para a próxima coluna, mas não sei como fazer isso.

segue o códigoTexto pré-formatado:

<?php include("conexao.php");


$query = mysqli_query($conect,"SELECT disciplina,avaliacao.primeira, avaliacao.segunda, avaliacao.recuperacao, avaliacao.frequencia,cod_disciplina FROM avaliacao, disciplina WHERE avaliacao.id_disciplina = disciplina.id_disciplina AND matricula_aluno='$matricula'

union

SELECT disciplina ,avaliacao2.primeira , avaliacao2.segunda, avaliacao2.recuperacao, avaliacao2.frequencia,cod_disciplina FROM avaliacao2 , disciplina WHERE avaliacao2.id_disciplina = disciplina.id_disciplina AND matricula_aluno='$matricula' ") or die(mysqli_error());

if(mysqli_num_rows($query) >0){

?>
<?php
while ($res = mysqli_fetch_array($query)) {

?>
<?php
echo $res['cod_disciplina'];
             ?></td>
<?php

echo $res[“disciplina”];

             ?></td>
<?php

$notas = array(“c” => $res[‘primeira’], “a” => $res[‘segunda’], “b” => $res[‘recuperacao’]);
rsort($notas);

$media = ($notas[0] + $notas[1])/2;

$numero = number_format($media, 2, ‘,’,’.’);

if ($numero < 7) {
echo “$numero”;
}else

echo “$numero”;

             ?></td>