Jump to content
Giovanird

[Resolvido] Consulta em 2 colunas sem retornar dados repetidos

Recommended Posts

Estou quebrando a cabeça para fazer uma consulta em 2 colunas da mesma tabela.
Preciso retornar a NOTA1 e NOTA2 consultando ambas colunas e listar sem repetir as notas vinculadas com cada série.

TABELA ALUNOS

COD |    CODSERIE  |  DATACADASTRO  |  NOTA1  |  NOTA2  
1       |    2                  |  01/08/2021           |  5            |  3
2       |    1                  |  11/08/2021           |  3            |  5
3       |    2                  |  12/08/2021           |  5            |  3
4       |    3                  |  15/08/2021           |  3            |  1
5       |    2                  |  15/08/2021           |  5            |  3
6       |    3                  |  18/08/2021           |  4            |  5
7       |   2                   |  22/08/2021           |  2            |  3
8       |   1                   |  12/08/2021           |  1            |  3
9       |   2                   |  25/08/2021           |  5            |  6


RETORNAR:

SERIE 1
Nota: 3
Nota: 5
Nota: 1
 

SERIE 2
Nota: 5
Nota: 3
Nota: 2
Nota: 6

 

SERIE 3
Nota: 3
Nota: 1
Nota: 4
Nota: 5

 

Aqui tenho um foreach de outra tabela que devolve o codigo das séries e as notas para consulta

foreach($rsserie as list($varserie,$varnota1,$varnota2)){
SELECT nota1, nota2 FROM alunos WHERE codserie like '$varserie' and (nota1 = '$varnota1' or nota1 = '$varnota2' or nota2 = '$varnota1' or nota2 = '$varnota2') Group by nota1, nota2
}

 

Share this post


Link to post
Share on other sites

Fazer um "unpivot"

 


 

SELECT nota
FROM
(
SELECT nota1 nota
FROM alunos
WHERE codserie like '$varserie'
and (nota1 = '$varnota1' or
     nota1 = '$varnota2')
UNION ALL
SELECT nota2 nota
FROM alunos
WHERE codserie like '$varserie'
and (nota2 = '$varnota1' or
     nota2 = '$varnota2')
) VIRTUAL
GROUP BY nota

 

Share this post


Link to post
Share on other sites
Em 28/08/2021 at 14:30, Motta disse:

Fazer um "unpivot"

 


 


SELECT nota
FROM
(
SELECT nota1 nota
FROM alunos
WHERE codserie like '$varserie'
and (nota1 = '$varnota1' or
     nota1 = '$varnota2')
UNION ALL
SELECT nota2 nota
FROM alunos
WHERE codserie like '$varserie'
and (nota2 = '$varnota1' or
     nota2 = '$varnota2')
) VIRTUAL
GROUP BY nota

 

Muito obrigado Motta pela ajuda!
Acabei me confundindo ao postar o script do select.
No foreach recebo apenas o codserie, e não dá certo quando faço com group nota1, nota2

 

foreach($rsserie as list($varserie)){
SELECT nota1, nota2 FROM alunos WHERE codserie like '$varserie' Group by nota1, nota2
}

Share this post


Link to post
Share on other sites
1 hora atrás, Motta disse:

Não entendi , desculpe.

TABELA ALUNOS

COD |    CODSERIE  |  DATACADASTRO  |  NOTA1  |  NOTA2  
1       |    2                  |  01/08/2021           |  5            |  3
2       |    1                  |  11/08/2021           |  3            |  5
3       |    2                  |  12/08/2021           |  5            |  3
4       |    3                  |  15/08/2021           |  3            |  1
5       |    2                  |  15/08/2021           |  5            |  3
6       |    3                  |  18/08/2021           |  4            |  5
7       |   2                   |  22/08/2021           |  2            |  3
8       |   1                   |  12/08/2021           |  1            |  3
9       |   2                   |  25/08/2021           |  5            |  6


RETORNAR:

SERIE 1
Nota: 3
Nota: 5
Nota: 1
 

SERIE 2
Nota: 5
Nota: 3
Nota: 2
Nota: 6

 

SERIE 3
Nota: 3
Nota: 1
Nota: 4
Nota: 5 

Aqui tenho um foreach de outra tabela que devolve o codigo das séries para consulta

foreach($rsserie as list($varserie)){
SELECT nota1, nota2 FROM alunos WHERE codserie like '$varserie' Group by nota1, nota2
}

 

Share this post


Link to post
Share on other sites

Tentou rodar o sql que postei , ou algo parecido ?

Share this post


Link to post
Share on other sites
Em 02/09/2021 at 22:26, Motta disse:

Tentou rodar o sql que postei , ou algo parecido ?

Resolvido!!
Muito obrigado Motta, fiz conforme me indicou apenas retirando a parte que cita os códigos das notas.
Segue script final:

 

SELECT nota
FROM
(
SELECT nota1 nota
FROM alunos
WHERE codserie like '$varserie'
UNION ALL
SELECT nota2 nota
FROM alunos
WHERE codserie like '$varserie'
) VIRTUAL
GROUP BY nota

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By k9studio
      Olá Amigos,
      se alguem puder dar um help fico muito grato
      seguinte:
      estou criando um sistema de login com cookie
      todas as paginas fica no patch
      www/htdocs/script/
      quando logar no dominio.com.br liberar o acesso no  cliente.dominio.com.br tambem
      acesso:dominio.com.br
      ou
      quando logar no cliente.dominio.com.br liberar o acesso no dominio.com.br tambem
      acesso:cliente.dominio.com.br
      e guando deslogar quebrar conxao com os dois
      existe uma maneira de fazer isso?
       
    • By Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
    • By Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
    • By Thiago Duarte
      Eu tenho uma página que abri um alert ao clicar no link , só que nao cadastra e nem funciona o login.
       
       <div class="btn-box">          <a class="btn btn-color venobox vbox-item" data-toggle="modal" href="javascript:void(0)" onclick="openRegisterModal();">Start now Free </a>             <img src="images/seta.png"> </div>  
      <div class="modal-body">                               <div class="box">                                  <div class="content">                                     <!-- Login Form -->                                     <div class="loginBox">                                        <form id="login-modal" role="form"  method="post" action="#">                                           <input type="hidden" name="param" value="logar" />                                           <!-- Success/Alert Notification -->                                           <p class="lm-success"><i class="icon icon_check_alt2"></i> <strong>Congratulation! Login modal validation is working. Implement your code.</strong></p>                                           <p class="lm-failed"><i class="icon icon_close_alt2"></i><strong> Something went wrong! Insert correct value.</strong></p>                                           <!-- Input Fields -->                                           <input id="lm-email" class="form-control input-lg" type="text" placeholder="Email" name="email" required="">                                           <input id="lm-password" class="form-control input-lg" type="password" placeholder="Password" name="senha" required="">                                           <!-- Login Button -->                                           <input type="submit" class="btn btn-color" value="Login">                                           <!-- <button class="btn btn-color">Login</button> -->                                        </form>                                     </div>                                     <!-- /End Login Form -->                                  </div>                               </div>                               <!-- /End Login Form Box -->                               <div class="box">                                  <!-- Signup Form -->                                  <div class="content registerBox" style="display:none;">                                     <form id="signup-modal" role="form" method="post" action="?go=cadastrar">                                        <!-- Success/Alert Notification -->                                        <p class="sm-success"><i class="icon icon_check_alt2"></i> <strong>Congratulation! Signup modal validation is working. Implement your code.</strong></p>                                        <p class="sm-failed"><i class="icon icon_close_alt2"></i><strong> Something went wrong! Insert correct value.</strong></p>                                        <!-- Input Fields -->                                        <input id="sm-email" class="form-control input-lg" type="text" placeholder="Email" name="email" required="">                                        <input id="sm-password" class="form-control input-lg" type="password" placeholder="password" name="password">                                        <input id="sm-confirm" class="form-control input-lg" type="password" placeholder="Repeat password" name="senha-confirm">                                        <!-- Signup Button -->                                        <!--  <button class="btn btn-color">Create an account</button> -->                                        <input type="submit" class="btn btn-color" value="Create an account">                                     </form>                                  </div>                                  <!-- /End Signup Form -->                               </div>                               <!-- /End Signup Form Box -->                            </div>  
      e em baixo do </html> coloquei
        <?php           $param = (empty($_POST['param'])) ? 'error' : $_POST['param'];           if($param == 'logar'){       //if($_POST['param'] == 'logar'){             $email = $_POST['email'];             $password = $_POST['password'];             $query1 = mysql_num_rows(mysql_query("SELECT * FROM usuario WHERE email = '$email' AND password = '$password'")) or die(mysql_error());             if($query1 == 1){           // print "<script>alert('logou');</script>";              print "<script>window.location.replace('dashboard/index.php');</script>";           }else{              echo "<script>alert('User and password do not match.'); history.back();</script>";           }        }        if(@$_GET['go'] == 'cadastrar'){           // $dominio_gratis = $_POST['dominio_gratis'];          $email = $_POST['email'];          $password = $_POST['password'];          $date_register = date("m-d-Y");                // if(empty($dominio_gratis)){           //     echo "<script>alert('Preencha todos os campos para se cadastrar.'); history.back();</script>";           // }else          if(empty($email)){           echo "<script>alert('Fill in all the fields to register.'); history.back();</script>";            }elseif(empty($password)){           echo "<script>alert('Fill in all the fields to register.'); history.back();</script>";        }else{           $query1 = mysql_num_rows(mysql_query("SELECT * FROM usuario WHERE email = '$email'"));           if($query1 == 1){            echo "<script>alert('User already exists.'); history.back();</script>";          }else{            mysql_query("insert into usuario (email, password, date_register, plan) values ('$email','$password','$date_register', '0')");            header("Location: dashboard/dashboard.php");         }      }   }   ?>  
      Alguem pode ajudar?
    • By ricardocelso
      Pessoal boa tarde,  tenho um pc com windows 10, oque preciso instalar para programar em php desde ja muito obrigado.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.