theteo 0 Denunciar post Postado Março 24, 2014 Pessoal, acho que minha mente travou agora, vamos lá: EXEMPLO 1 tbl_alunoid,nome 1 - Joao 2 - Maria tbl_disciplina id,nome 1 - matematica 2 - portugues 3 - Biologia Eu estou armazenando na tabela tbl_agenda id_aluno,id_disc1,id_disc2, OU SEJA tbl_agenda id_agenda, id_aluno, id_disc1, id_disc2 1 - 1 - 1 - 2 2 - 2 - 1 - 3 Dessa forma como eu faria para obter o nome do aluno e o nome das disciplinas em um SELECT usando mysqli ? É possível sem ter que fazer 2 selects ? tbl_v_agenda 1 - Joao matematica Portugues 2 - Maria matematica Biologia EXEMPLO 2 tbl_alunoid,nome 1 - Joao 2 - Maria tbl_disciplina id,nome 1 - matematica 2 - portugues 3 - Biologia tbl_agenda id,agenda,id_aluno, id_disc 1- 1 - 1 2- 1 - 2 3- 2 - 1 4- 2 - 3 Dessa forma como eu faria para obter o nome do aluno e o nome das disciplinas em um SELECT usando mysqli que me retornasse assim? isso é possível ? agrupando as disciplinas pelo aluno ? tbl_v_agenda 1 Joao matematica Portugues 2 Maria matematica Biologia Muito obrigado galera. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Março 25, 2014 Segue: select c.nome, b.nome from tbl_agenda a inner join tbl_disciplina b on a.id_disc = b.id inner join tbl_aluno c on a.id_aluno = c.id order by c.id Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Março 25, 2014 Valeu Roberto, agora vamos as considerações finais. Essa query que vc postou é para o exemplo 1 ou 2 ? Quero dizer tb, que no caso do exemplo 1 , id_disc2 pode ser 0, pois as vezes o aluno marcara apenas 1 prova. Ou seja, ele poderá marcar ATÉ 2 provas por mês. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Março 25, 2014 A unica estrutura correta é a do segundo exemplo A estrutura do primeiro exemplo esta errada... Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Março 25, 2014 Ok, vou fazer uns tetes amanha e volto aqui para finalizar. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Março 25, 2014 Roberto, o select que vc passou me retorna algo do tipo : Joao matematica Joao portugues Agora, minha REAL dúvida era se de alguma forma eu pudesse RETORNAR: João Matemática Portugues Ou seja, o aluno e as disciplinas que ele escolheu ( sabendo q ele poderá escolher apenas uma ). Isso é possível diretamente via SQL ou eu teria que fazer isso via aplicação ? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Março 25, 2014 Via SQL realmente não conheço nada que faça isso, no meu ver teria que fazer via aplicação mesmo... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 25, 2014 Tente group_concat Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Março 25, 2014 Quero agradecer a todos vcs pela ajuda. No final ficou assim: Primeiro criei uma view: select `m`.`id_marcacao` AS `id_marcacao`,`m`.`id_agenda` AS `id_agenda`,`m`.`id_aluno` AS `id_aluno`,`u`.`nome` AS `aluno`,`d`.`nome` AS `disciplina` from ((`tbl_marcacoes` `m` join `tbl_usuarios` `u`) join `tbl_disciplinas` `d`) where ((`m`.`id_aluno` = `u`.`id_user`) and (`m`.`id_disciplina` = `d`.`id_disciplina`)) order by `u`.`nome`,`d`.`nome` na aplicação coloquei esse código. if ($sql = $mysqli->prepare("SELECT id_aluno AS id, aluno AS aluno, GROUP_CONCAT( disciplina ) AS disciplinas FROM tbl_v_marcacoes WHERE id_agenda = '$id_agenda' GROUP BY id_aluno ORDER BY aluno")) { PERGUNTA O ideal seria inserir na VIEW o GROUP_CONCAT ou fazer na APLICAÇÃO os dois códigos JUNTOS ? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites