Ir para conteúdo

POWERED BY:

Arquivado

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

nldj

Registros únicos, não duplicados

Recommended Posts

Alguém sabe como fazer um select para não trazer os registros duplicados....

 

e os que estão duplicados, trazer apenas um ?????

 

Para vcs entenderem:

 

Se eu fizer isso SELECT CODIGO, EMPRESA, ENDERECO FROM tblProspects WHERE ENDERECO IN (SELECT ENDERECO FROM tblProspects GROUP BY ENDERECO HAVING count(*) > 1) ORDER BY CODIGO ASC

 

Ele vai listar todos os registros duplicados...

PEDRO

PEDRO

PEDRO

 

Se eu usar NOT IN no SELECT ele vai me trazer todos os registros não duplicados...

JOAO

FELIPE

 

Eu preciso que traga assim:

PEDRO

JOAO

FELIPE

 

O DISTINCT(ENDERECO) não funciona!!!

 

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este código é usado uso para verificar se os dados estão duplicados, e sendo verdadeiro ele remove os dados.

 

Você pode usar a cláusula DISTINCT no Select

<%@Language="vbscript" %>
<%
Const adOpenForwardOnly = 0
Const adLockReadOnly = 1
Const adCmdText = &H0001
Const adUseClient = 3
%>
<!DOCTYPE HTML Public "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Remover registros duplicados</TITLE>
<STYLE TYPE="text/css">
BODY { background-color: #336699; font-family: Verdana; font-size: 10pt; color: #FFFFFF }
TD { font-family: Verdana; font-size: 10pt; color: #000000 }
</STYLE>
</HEAD>
<BODY>
<%
sPassword = "admin" ' password
if Request("password") <> "" Then
Session("Password") = Request("password")
End if
if Session("Password") <> sPassword Then
Response.Write "<HTML><BODY><FORM ACTION=""removeduplicates.asp"" METHOD=""post"">Password: (CaSe SeNsiTivE) <INPUT TYPE=""password"" NAME=""password""><INPUT TYPE=""submit""></FORM>"
Else
delDub = False
File = Request.ServerVariables("SCRIPT_NAME")
File = StrReverse(File)
Posi = Instr(File, "/")
File = Left(File, Posi - 1)
File = StrReverse(File)
if Request.Form("db") <> "" Then
On Error Resume Next
DSNName = Request.Form("db")
sdbTable = Request.Form("tb")
spriKey = Request.Form("pk")
sdbField = Request.Form("fn")
sdbPath = "DBQ=" & Server.Mappath(DSNName) & ";Driver={Microsoft Access Driver (*.mdb)};"
strSQL = "SELECT COUNT(*) AS ttCount FROM " & sdbTable
Set strConn = Server.CreateObject("ADODB.Connection")
strConn.Open sdbPath
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = adUseClient
rs.Open(strSQL), strConn, adOpenForwardOnly, adLockReadOnly, adCmdText
Set rs = strConn.Execute(strSQL)
tempArr = ""
totalFound = rs("ttCount")
rs.Close
Set rs = nothing
totalFound = CInt(totalFound)
Response.Write totalFound
Response.Write " records" & vbcrlf
Response.Write "<HR>" & vbcrlf
strSQL = "SELECT " & sdbField & "," & spriKey & " FROM " & sdbTable & " ORDER BY " & sdbField
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = adUseClient
rs.Open(strSQL), strConn, adOpenForwardOnly, adLockReadOnly, adCmdText
if Err = 0 Then
For i = 0 To (totalFound - 1)
rs.MoveFirst
rs.Move(i)
lookFor = rs.fields(sdbField)
if lookFor = tempVal Then
foundDups = rs.fields(spriKey)
tempArr = tempArr & foundDups & ","
End if
tempVal = lookFor
Next
rs.Close
Set rs = nothing
if tempArr <> "" Then
Response.Write "Primary Key ID contendo dados duplicados no campo selecionado:" & vbcrlf
Response.Write "<BR>" & vbcrlf
End if
if tempArr = "" Then
Response.Write "Não há registros duplicados encontrados." & vbcrlf
Else
tempArr = Left(tempArr, Len(tempArr) - 1)
Response.Write tempArr
tempArr = Split(tempArr, ",", -1, 1)
prCount = UBound(tempArr)
prCount = prCount + 1
Response.Write "<BR>" & vbcrlf
For i = 0 To (prCount - 1)
strSQL = "DELETE FROM " & sdbTable & " WHERE " & spriKey & " = " & tempArr(i)
strConn.Execute(strSQL)
Next
End if
delDub = True
Else
Response.Write Err.Description
End if
strConn.Close
Set strConn = nothing
if Err = 0 And delDub = True Then
if tempArr <> "" Then
Response.Write "<BR><B>" & prCount & "</B> registro duplicado"
if prCount <> 1 Then
Response.Write "s"
End if
Response.Write " excluída com sucesso." & vbcrlf
End if
End if
End if
%>
<HR><BR><DIV ALIGN="center"><SPAN id="result_box"><SPAN title="Remove duplicate database records" closure_hashCode_1phoep="158">Remover duplicado registros de banco de dados</SPAN></SPAN></DIV>
<FORM ACTION="<%=File %>" METHOD="post">
<TABLE CELLPADDING="4" CELLSPACING="1" ALIGN="center" WIDTH="50%" STYLE="border: 1px outset" BGCOLOR="#FFFFFF">
<TR>
<TD WIDTH="50%" BGCOLOR="#E9E9E9">Database:</TD>
<TD WIDTH="50%" BGCOLOR="#E9E9E9">
<INPUT TYPE="text" SIZE="25" NAME="db" STYLE="text-align: right"><B>.mdb</B></TD></TR>
<TR>
<TD WIDTH="50%" BGCOLOR="#E9E9E9"> Nome da Tabela:</TD>
<TD WIDTH="50%" BGCOLOR="#E9E9E9">
<INPUT TYPE="text" SIZE="25" NAME="tb"></TD></TR>
<TR>
<TD WIDTH="50%" BGCOLOR="#E9E9E9">Nome do Campo:</TD>
<TD WIDTH="50%" BGCOLOR="#E9E9E9">
<INPUT TYPE="text" SIZE="25" NAME="fn"></TD></TR>
<TR>
<TD WIDTH="50%" BGCOLOR="#E9E9E9">Primary Key:</TD>
<TD WIDTH="50%" BGCOLOR="#E9E9E9">
<INPUT TYPE="text" SIZE="25" NAME="pk"></TD></TR>
<TR>
<TD WIDTH="50%" BGCOLOR="#E9E9E9"> </TD>
<TD WIDTH="50%" BGCOLOR="#E9E9E9">
<INPUT TYPE="submit" VALUE="Remove Duplicates"></TD></TR></TABLE></FORM>
<HR>
<%
End if
%>
</BODY>
</HTML>

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.