Ir para conteúdo
josePeixoto

Concatenação de informações

Recommended Posts

Olá, bom dia! 

 

Estou com um problema em uma consulta que está saindo as mesmas informações mas com uma chave diferente. Tipo:

col1     col2        col3

x             y               r

x             y               r'

 

como eu faço pra concatenar e ficar:

 

col1     col2        col3

x             y             r,r'

 

Agradeço desde já pela atenção! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia José,

 

Para montar esse resultado, o melhor é utilizar o LISTAGG (só a partir do banco 11), porém não existe um DISTINCT para o LISTAGG.

 

Fiz um teste, veja se ajuda:

create table xx (
col1 varchar2(2),
col2 varchar2(2),
col3 varchar2(2))
tablespace dados;

 

insert into xx values('x','y','r0');
insert into xx values('x','y','r1');
insert into xx values('x','y','rs');
insert into xx values('x','y','r ');


with x as(
SELECT listagg(col1,',') WITHIN GROUP (ORDER BY col1) col1,
       listagg(col2,',') WITHIN GROUP (ORDER BY col2) col2,
       listagg(col3,',') WITHIN GROUP (ORDER BY col3) col3
from   xx)
select substr(regexp_replace(col1,'([^,]+)(,\1)+', '\1') ,1,10) col1,
       substr(regexp_replace(col2,'([^,]+)(,\1)+', '\1') ,1,10) col2,
       substr(regexp_replace(col3,'([^,]+)(,\1)+', '\1') ,1,10) col3
from   x;
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por SeveroSoft
      Fala mentes brilhantes, como vocês estão? bem?
       
      Bom, hoje precisava de uma ajudinha de vocês, espero que consigam me dar uma força .
       
       
      Sistema:
      Estou desenvolvendo um sistema de atendimento em mesas de um restaurante.
      Para isso adicionei 1 select options que chama a tabela CATEGORIAS (SEGUE A IMAGEM)


      Ao selecionar a categoria (Por exemplo "Pizzas") Carrega as opções no outro Select Options abaixo que se chama produtos.

       
      Até ai tudo bem... Oque preciso agora é fazer com que ao SELECIONAR A OPÇÃO PIZZA mostre apenas os CHECKBOX que estão relacionados ao produto (Tem na tabela um campo chamado id_modificadores, que if o id_prod (Na tabela modificadores) == id_modificadores (Na tabela produtos) {
      }
      CÓDIGO QUE INFORMA OS MODIFICADORES.
      <?php while($reg3 = $query3->fetch_array()) { ?> <?php $nome_mod = $reg3["nome_mod"]; $nome_opt_mod = $reg3["nome_opcao_mod"]; $preco_mod = $reg3["preco_mod"]; $arrays = explode(',', $nome_opt_mod); $arrays_preco = explode(',', $preco_mod); echo "<br> <div class='col-sm-6'> <div class='card'> <h5 class='card-header'>$nome_mod</h5> <div class='card-body' name='id_modificadores' id='id_modificadores'> "; foreach($arrays as $valores) { echo "<div class='form-check'> <span type='hidden' class='switch switch-sm'><input type='checkbox' name='modificador[]' class='form-check-input' id='$valores' value='$valores'> <label for='$valores'><h5 class='card-title'>$valores</h5></label><br></div>"; } echo " </div> </div><br> </div>"; } ?> Aparentemente não entendo nada de AJAX, e o sistema que usei nos select options foi do CELKE, mas não funciona para checkbox. Lembrando que estes checkbox passam por um EXPLODE para se separarem pois eles vão para o banco de dados por ','.
       
      Desde-já agradeço a todos e tenham uma ótima semana. 
      Aguardo ansiosamente por esse HELP. 
       
      Atenciosamente Lucas Severo
       
    • Por leoteixeira2
      Boa tarde galera, sei que para vocês podem ser simples. Mas não estou conseguindo exibir os dados da consulta no SQL na minha pagina index.php
       
      Meu select e o index.php
      select `tipo`, sum(val_sc) valor from pagamentos group by tipo <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Exemplo MySQL</title> <meta name="description" content="example-aggregate-functions-and-grouping-sum-with-group-by- php mysql examples | w3resource"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-12"> <h2>Produtos somados referente a valorização:</h2> <table class='table table-bordered'> <tr> <th>Tipo Produto:</th><th>Valorização:</th> </tr> <?php $hostname="localhost"; $username="usuario_db"; $password="senha_db"; $db = "database"; $dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password); foreach($dbh->query('SELECT `tipo`, sum(val_sc) valor FROM pagamentos GROUP BY tipo') as $row) { echo "<tr>"; echo "<td>" . $row['tipo'] . "</td>"; echo "<td>" . $row['SUM(val_sc)'] . "</td>"; echo "</tr>"; } ?> </tbody></table> </div> </div> </div> </body> </html> O que tem de errado? aparece as tabelas mas não aparece os resultados. 
       
      Obrigado desde ja.
    • Por Nova Ourora
      <div class="card-block"> <div class="card-block"> <form class="form-inline"> <select class="form-control" id="nmProduto" style="max-width: 300px;"> <option value="">Selecione o Produto</option> <option>SUPORTE PARA CARIMBO DE MADEIRA COM 06</option> <option>BOTON PERSONALIZADO - SESMT</option> <option>RELOGIO DESPERTADOR 0 A 60 MIN.</option> </select> Quero que esta DIV pegue os valores de uma variável (que fica na tabela produtos).
      PARECE SIMPLES MAIS TA DIFÍCIL
    • Por Claudio r Martinez
      Olá pessoal, esse é meu primeiro post aqui no forum, mas eu consulto para minhas duvidas há muito tempo.
      Preciso de uma ajuda para saber como seria possível eu montar um select ou até mais de um se for o caso.
      É assim:
      Terei uma pagina onde aparecem perfis de pessoas de um determinado local.
      a consulta do usuário seria ex:
             Estado São Paulo e cidade Santo André. (select * from *** Where estado = 'sao paulo' and cidade = 'santo andre')
      Após o final dos  registros com esses quesitos, precisaria listar na sequência os registros apenas do mesmo estado.
      Preciso que fique dentro do loop para que continue na sequencia de paginação.

    • Por Josemir Dias
      Bom dia senhores,
       
      De antemão quero dizer que já procurei a questão em diversos tutoriais, mas, não consegui encontrar um material que fosse adaptável para este caso.
      A questão é a seguinte:
      Tenho dois selects que trazem dados do banco; O primeiro traz os usuários cadastrados no sistema e o segundo carrega todos os módulos do sistema desabilitando aqueles que o usuário já tem permissão para usar; Consegui escrever o código para os dois selects serem carregados, mas, só consigo fazer isso uma única vez que é quando o usuário entra na página e somente para um usuário, pois, as informações vem via $_Session; O problema está no fato de que a página que estou desenvolvendo é uma página administrativa e preciso conseguir editar as permissões de todos os usuários, desta forma, preciso que o segundo select seja alterado para mostrar os módulos desabilitados de cada usuário selecionado no select anterior.
       
      Abaixo o código que estou usando para o form:
      <form accept-charset="utf-8" name="Permissoes" method="POST" action="../permissoes/permitir.php"> <fieldset> <div class="form-group" > <select name="id_user" id="id_user" class="form-control"> <?php $qry_user = "SELECT * FROM cadastrousuarios ORDER BY CadastroUsuarios_Nome"; $result_user = mysqli_query($conn, $qry_user); while($row_user = mysqli_fetch_assoc($result_user) ) { echo '<option value="'.$row_user['CadastroUsuarios_ID'].'">'.$row_user['CadastroUsuarios_Nome'].'</option>'; } ?> </select><br> <select name="slctusers" class="form-control"> <?php //CONSULTA A MONTAGEM DOS CHECKBOX $qry_modulos = mysqli_query($conn, "SELECT * FROM `cadastromod`"); if($qry_modulos === FALSE) { die(mysqli_error($conn)); } //mysqli_close($conn); while($row_modulos = mysqli_fetch_assoc($qry_modulos)){ $modulodisabled = "False"; $modulochecked = "False"; //CONSULTA AS PERMISSÕES $qry_permissoes = mysqli_query($conn, "SELECT * FROM `permissoesusr` WHERE `PermissoesUsr_IDUsuario` = ".$_SESSION['id']." AND `PermissoesUsr_Status` = 'A'"); while($row_permissoes = mysqli_fetch_assoc($qry_permissoes)){ if($row_permissoes['PermissoesUsr_IDModulo'] == $row_modulos['CadastroMod_FKID'] && $row_permissoes['PermissoesUsr_TipoMod'] == $row_modulos['CadastroMod_Tipo']){ //echo "Marcou". $row_permissoes['PermissoesUsr_IDModulo']. " ".$row_modulos['CadastroMod_ID']; $modulochecked = "True"; $modulodisabled = "True"; } } echo" <div class='form-check' align='left'> <label align='left' class='form-check-label' for='check1'> <option value=".$row_modulos['CadastroMod_FKID']." "; if ($modulodisabled=="True"){echo "Disabled";} echo ">".$row_modulos['CadastroMod_Modulo']."</option> </label> </div>"; }?> </select> <br> <button type="submit" class="btn btn-lg btn-success btn-block">Permitir</button> </form><br><br><br>  
      E aqui como isso fica renderizado:

       
      Desde já agradeço imensamente a colaboração de todos e espero ser útil tão logo meus conhecimentos sejam suficientes.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.