Foros del Web » Programando para Internet » ASP Clásico »

problemas con la selección y campos repetidos

Estas en el tema de problemas con la selección y campos repetidos en el foro de ASP Clásico en Foros del Web. Hola amigos, tengo un problemita y después de hacer mil millones de pruebas no doy con la solución, a ver si me ayudan. El tema ...
  #1 (permalink)  
Antiguo 17/08/2006, 04:18
 
Fecha de Ingreso: julio-2005
Mensajes: 137
Antigüedad: 18 años, 11 meses
Puntos: 0
problemas con la selección y campos repetidos

Hola amigos, tengo un problemita y después de hacer mil millones de pruebas no doy con la solución, a ver si me ayudan.

El tema es que tengo una tabla con estos campos:

id,autor,fecha,cancion ....

y lo que quiero es que me muestre los ultimos 20 autores registrados,pero que no se repitan, por ejemplo he podido dar de alta el mismo dia <> canciones del mismo autor, por lo que no se tendría q repetir.

la sentencia que utilizo es:

SQL1="SELECT DISTINCT top 20 autor,id FROM mitabla order by id desc "

Esta sentencia me muestra los 20 ultimos registros de la bd, pero me repite el autor, y yo lo que quiero es que me muestre los ultimos 20 autores registrados.

Me pueden ayudar?

Gracias como simpre por sus ayudas,

Saludos
  #2 (permalink)  
Antiguo 17/08/2006, 08:05
Avatar de JoshMex
Moderador Webhosting
 
Fecha de Ingreso: enero-2006
Mensajes: 4.057
Antigüedad: 18 años, 4 meses
Puntos: 166
Contra que motor de bases de datos estas ejecutando dicha consulta?
__________________
JoshMex
Desarrollador Plataforma Microsoft / Windows / ASP / ASP.NET / SQL Server
Es inútil hacer cualquier cosa a prueba de tontos, porque los tontos son muy ingeniosos
  #3 (permalink)  
Antiguo 17/08/2006, 08:22
 
Fecha de Ingreso: julio-2005
Mensajes: 137
Antigüedad: 18 años, 11 meses
Puntos: 0
Joshmex, te pongo mas codigo:

set oConn1=Server.CreateObject("ADODB.Connection")
set rs1=Server.CreateObject("ADODB.Recordset")

' Conexión por OLEDB
oConn1.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("mibd.mdb")

SQL1="SELECT DISTINCT top 20 autor,id FROM songs order by id desc "

No se si con esto te sirve?

gracias
  #4 (permalink)  
Antiguo 17/08/2006, 08:32
Avatar de JoshMex
Moderador Webhosting
 
Fecha de Ingreso: enero-2006
Mensajes: 4.057
Antigüedad: 18 años, 4 meses
Puntos: 166
Si sólo colocas el campo autor te sale bien la consulta, cierto?

Podría ayudarte más con una copia de la base de datos, de esa forma podría ver la estructura de las tablas.
__________________
JoshMex
Desarrollador Plataforma Microsoft / Windows / ASP / ASP.NET / SQL Server
Es inútil hacer cualquier cosa a prueba de tontos, porque los tontos son muy ingeniosos
  #5 (permalink)  
Antiguo 17/08/2006, 08:38
 
Fecha de Ingreso: julio-2005
Mensajes: 137
Antigüedad: 18 años, 11 meses
Puntos: 0
JoshMex, solo con autor, no lo hace bien, lo que hace es mostrarme de forma alfabetica descendente los autores registrados, y yo lo que quiero es mostrar los últimos 10 autores con canciones registradas y que no se repitan, ya que en un día se pueden dar de alta de un mismo autor diferentes canciones.

Estoy encallado con esto y seguro que es una pijada!
  #6 (permalink)  
Antiguo 17/08/2006, 08:44
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
busca sobre "GROUP BY"

lee esto y tendras una mejor informacion
http://www.w3schools.com/sql/sql_groupby.asp

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #7 (permalink)  
Antiguo 17/08/2006, 08:58
 
Fecha de Ingreso: julio-2005
Mensajes: 137
Antigüedad: 18 años, 11 meses
Puntos: 0
JuanRaPerez, gracias por la respuesta, pero creo que con el Group By no soluciono el problema, ya que lo que quiero en este caso no es saber el número de canciones de cada autor, si no los últimos 10 autores registrados (o sea los últimos 10 autores que ocupan las ultimas posiciones de la tabla, pero sin repetición).

sigo probando pero sin fortuna......

Si alguien sabe como hacerlo, se lo agradeceria...

Gracias
  #8 (permalink)  
Antiguo 17/08/2006, 09:11
Avatar de JoshMex
Moderador Webhosting
 
Fecha de Ingreso: enero-2006
Mensajes: 4.057
Antigüedad: 18 años, 4 meses
Puntos: 166
Pero si guardas una fecha de cuando se registraron los autores seria muy sencillo puesto que solo tendrías que ordenar por ese campo fecha.
__________________
JoshMex
Desarrollador Plataforma Microsoft / Windows / ASP / ASP.NET / SQL Server
Es inútil hacer cualquier cosa a prueba de tontos, porque los tontos son muy ingeniosos
  #9 (permalink)  
Antiguo 17/08/2006, 09:12
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Cita:
Iniciado por proyectosej Ver Mensaje
pero creo que con el Group By no soluciono el problema, ya que lo que quiero en este caso no es saber el número de canciones de cada autor
El Group By no cuenta, el que cuenta es el Count, creo que deverias leer "entendiendo" el documento

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #10 (permalink)  
Antiguo 17/08/2006, 09:14
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Cita:
Iniciado por orharo2003 Ver Mensaje
Por que no pruebas asi :

SELECT top 10 autor, Count(ID) AS Cantidad FROM mitabla GROUP BY autor order by COUNT(ID) desc
suerte no era asi no?
__________________
JuanRa Pérez
San Salvador, El Salvador
  #11 (permalink)  
Antiguo 17/08/2006, 09:19
Avatar de JoshMex
Moderador Webhosting
 
Fecha de Ingreso: enero-2006
Mensajes: 4.057
Antigüedad: 18 años, 4 meses
Puntos: 166
Cita:
Iniciado por proyectosej Ver Mensaje
ya que lo que quiero en este caso no es saber el número de canciones de cada autor, si no los últimos 10 autores registrados (o sea los últimos 10 autores que ocupan las ultimas posiciones de la tabla, pero sin repetición).
Al parecer es una confusión; tu no debes buscar en la tabla de canciones sino en la tabla de autores (si esta existe).

Tienes que tener en cuenta de tratar de normalizar tu base de datos lo mejor posible de esa forma evitarás muchos problemas.
__________________
JoshMex
Desarrollador Plataforma Microsoft / Windows / ASP / ASP.NET / SQL Server
Es inútil hacer cualquier cosa a prueba de tontos, porque los tontos son muy ingeniosos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:53.