Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal tenho as tabelas com os seguintes campos:
tbl_aluno ( id_aluno , nome_aluno )
tbl_disciplina ( id_disc, nome_disc )
tbl_lista ( id_lista, id_aluno, id_disc )
tbl_nota ( id_aluno,id_disc,nota )
Quero criar uma pagina onde primeiro eu Listarei os ALUNOS e as disciplinas, mas o aluno pode ter apenas 1 ou 2 disciplinas, e um campo para colocar a nota, assim:
Téo
Portugues Nota: ( )
Matemática Nota: ( )
João
Física Nota: ( )
Maria
Ciencia Nota: ( )
Geografia Nota: ( )
A primeira dúvida é em uma única consulta SQL trazer isso ai.
Obrigado.
Sem Group_Concat
SELECT m.id_aluno, u.nome, m.id_disciplina
FROM
tbl_marcacoes m, tbl_usuarios u
WHERE
m.id_aluno = u.id_user and
m.id_agenda = '$id_agenda'
ORDER BY u.nome"
Motta, isso ai me traz um resultado assim:
11 JUAREZ SOAREZ COISINHA DE JESUS 9
12 NARUTO 5
10 THETEO CARLO ENGENHEIRO 6
10 THETEO CARLO ENGENHEIRO 7
E eu queria algo assim:
10 THETEO CARLO ENGENHEIRO 6 , 7
Porém guardando em variáveis diferentes o 6 e o 7.
Quantos m.id_disciplina diferentes tem ?
SQL não trabalha com variaveis, trabalha com colunas, para "colunar" (pivot) se poderria usar o CASE.
Ou separar as variáveis na camada de aplicação.
pois é motta, to pensnando em fzer isso via aplicacao mesmo, mas respondendo sua pergunta:
esse id_disciplina vem da tbl_disciplinas
O aluno escolhe a disciplina que ele quer fazer a prova.
e marca ( essa informacao vai pra tbl_marcacoes ) por isso eu chamei de "m."
depois, uma vez que a prova é feita, a pessoa listará a tbl_marcacoes para poder INSERIR as notas das provas.
essa info eu jogarei na tbl_notas depois.
Usando o GROUP_CONCAT eu conseguiria fazer algo parecido, agora como eu recuperaria SEPARADAMENTE os IDs das disciplinas ?
exemplo:
SELECT m.id_aluno, u.nome, GROUP_CONCAT(m.id_disciplina)
FROM
tbl_marcacoes m, tbl_usuarios u
WHERE
m.id_aluno = u.id_user and
m.id_agenda = '$id_agenda'
GROUP BY m.id_aluno
ORDER BY u.nome"
Quando eu recupero isso:
$sql->bind_result($id_aluno,$aluno, $disc);
$disc contem algo do tipo 1,3
Eu tenho como pegar esse valor DIRETO NA QUERY separadamente >
Algo como:
GROUP_CONCAT(m.id_disciplina) as id_1,id_2 - kkkkkk
Obrigado.