Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pfm

Select Descartando dados iguais (parecidos)

Recommended Posts

Tenho a seguinte tabela de nome (fichario):

cod_reg = Serial (numero serial apenas para diferenciar um registro do outro)

area = Pediatria

prontuario = 01 (normalmente tem de 1 a 3 arquivos na sala)

gaveta = 01, 02, 03 ou 04 (na maioria 03 gavetas, em alguns casos 4)

pasta = o nome da pasta arquivada na gaveta (posso ter até 30 pastas diferentes lá)

arquivo = o nome do arquivo guardado na pasta (podem ser varios)

O problema esta quando a pessoa quer ver as pastas que estão arquivadas em determinada gaveta.

 

Tem pasta que aparece mais de uma vez porque dentro dela tem mais de um arquivo

 

Ex do cadastro:

gaveta = 01 | pasta = Pós Parto | arquivo = Procedimentos.doc

gaveta = 02 | pasta = Exames | arquivo = Sangue.doc

gaveta = 02 | pasta = Exames | arquivo = Clínico Geral.doc

gaveta = 02 | pasta = Exames | arquivo = Teste do Pézinho.doc

 

Ex do resultado:

No resultado esta aparecendo assim:

Gaveta - - Pasta

01 - - - - - Pós Parto

02 - - - - - Exames

02 - - - - - Exames

02 - - - - - Exames

 

 

Segue a pagina simplificada:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conn/conectdbpostgre.asp"-->
<%
SQL="SELECT * FROM fichario WHERE  area='Pediatria' AND prontuario='01' ORDER BY gaveta ASC, pasta ASC;"
set busca = db.execute(SQL)	
%>
<html>
<body>
<TABLE align="center" width="400" border="1">
<TR>							
<TD>Gaveta</TD>
<TD>Pasta</TD>			
</TR>	
<%do while not busca.eof%> 										
<TR>
<TD><%=busca.fields("gaveta").value%></TD>
<TD><%=busca.fields("pasta").value%></TD>
</TR>
<%busca.movenext	
loop
%>							
</TABLE>					
</body>
</html>
<%
busca.close
set busca=nothing
%>
<!--#include file="conn/closedbpostgre.asp"-->

 

 

como posso consertar isso? :pinch:

Compartilhar este post


Link para o post
Compartilhar em outros sites

testei aqui vinicius, e te falo uma coisa.

Descobri que não sei usar o GROUP BY

 

fiz assim:

SQL="SELECT area,prontuario,gaveta,pasta,arquivo FROM fichario WHERE  area='Pediatria' AND prontuario='01' GROUP BY gaveta ORDER BY gaveta ASC, pasta ASC ;"

 

e gerou o seguinte erro:

ERRO: coluna "fichario.area" deve aparecer na clausula GROUP BY ou ser utilizada em uma função de agregação LINE 1

 

Acrescentei os campos que pediu e ficou assim:

SQL="SELECT * FROM fichario WHERE area='Pediatria' AND prontuario='01' GROUP BY area, prontuario, gaveta, pasta, arquivo,cod_reg ORDER BY gaveta ASC, pasta ASC    ;"

 

Dessa forma funciona mas continua aparecendo a pasta Exame 3 vezes, igual antes. :upset:

 

Gaveta - - Pasta

01 - - - - - Pós Parto

02 - - - - - Exames

02 - - - - - Exames

02 - - - - - Exames

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comece agrupando pelo campo Gaveta e poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok salgado ficou assim:

 

SQL:

SQL="SELECT * FROM fichario WHERE area='Pediatria' AND prontuario='01' GROUP BY gaveta ORDER BY gaveta ASC, pasta ASC;"

 

ERRO:

ERRO: coluna "fichario.cod_reg" deve aparecer na clausula GROUP BY...

 

Adicionando o que o erro pede...

SQL:

SQL="SELECT * FROM fichario WHERE area='Pediatria' AND prontuario='01' GROUP BY gaveta,cod_reg ORDER BY gaveta ASC, pasta ASC;"

 

ERRO:

ERRO: coluna "fichario.area" deve aparecer na clausula GROUP BY...

 

e assim vai sucessivamente até que eu coloque todos os campos no GROUP BY.

Ahe ele funciona mas aparece com as 3 pastas de exame ( ou seja volta ao mesmo problema inicial sem o GROUP BY)

 

Talves eu não esteja sabendo usa-lo :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tentou usar o SELECT DISTINCT

Compartilhar este post


Link para o post
Compartilhar em outros sites

procure pelo google, tem muitos exemplos também, e acesse o w3schools

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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