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

problema con Distinct (sql)

Estas en el tema de problema con Distinct (sql) en el foro de ASP Clásico en Foros del Web. hola quiero sacar los ultimos 10 registros de un foro, tengo esto select distinct top 10 a.id_tema, b.tema from foro_mensajes a, foro_temas b where a.id_tema=b.id_tema ...
  #1 (permalink)  
Antiguo 20/07/2009, 16:19
Avatar de Tony Manero  
Fecha de Ingreso: diciembre-2002
Ubicación: en la disco
Mensajes: 34
Antigüedad: 22 años, 4 meses
Puntos: 0
problema con Distinct (sql)

hola

quiero sacar los ultimos 10 registros de un foro, tengo esto

select distinct top 10 a.id_tema, b.tema from foro_mensajes a, foro_temas b where a.id_tema=b.id_tema order by a.fecha_creacion

pero me sale
La cláusula ORDER BY (a.fecha_creacion) está en conflicto con DISTINCT.

la tabla esta asi

foro_temas

id_tema
tema


foro_mensajes

fecha_creacion
id_tema
id_usuario
cuerpo
  #2 (permalink)  
Antiguo 20/07/2009, 16:20
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: problema con Distinct (sql)

Normalmente cuando usas distinct, todos los elementos del select deben ir el el order by

Saludos
  #3 (permalink)  
Antiguo 20/07/2009, 17:05
Avatar de Tony Manero  
Fecha de Ingreso: diciembre-2002
Ubicación: en la disco
Mensajes: 34
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: problema con Distinct (sql)

lo puse asi

select distinct top 10 a.id_tema, b.tema from foro_mensajes a, foro_temas b where a.id_tema=b.id_tema order by a.fecha_creacion, a.id_tema, b.tema

pero me sale lo mismo
  #4 (permalink)  
Antiguo 20/07/2009, 17:12
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: problema con Distinct (sql)

de qué Base de datos estamos hablando?

¿SQL Server?
¿Cómo te estas conectado? ¿ODBC? ¿OleDB?

Esto quizá te sirva:
http://support.microsoft.com/kb/96895/es
http://support.microsoft.com/kb/125324/es
  #5 (permalink)  
Antiguo 20/07/2009, 17:15
Avatar de Tony Manero  
Fecha de Ingreso: diciembre-2002
Ubicación: en la disco
Mensajes: 34
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: problema con Distinct (sql)

es access (XD) con oledb, es una aplicacion sencilla

si hay otra forma de hacerlo seria genial

pd:felicitaciones por tu nombramiento como moderador
  #6 (permalink)  
Antiguo 20/07/2009, 17:45
Avatar de Tony Manero  
Fecha de Ingreso: diciembre-2002
Ubicación: en la disco
Mensajes: 34
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: problema con Distinct (sql)

use distinctrow, no me da error, pero igual me muestra id_tema repetidos
  #7 (permalink)  
Antiguo 20/07/2009, 18:03
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: problema con Distinct (sql)

aaaahhh, ok

Primero gracias por lo de la felicitación (¿?), segundo disculpa por no haberme detenido a estudiar bien tu problema

Veamos.
Te muestra repetidos por que en el SELECT tienes campos de cada una de las tablas involucradas, si leemos la API de DISTINCROW el apartado final dice:

Cita:
DISTINCTROW tiene efecto sólo cuando se seleccionan campos de algunas pero no de todas las tablas utilizadas en la consulta. DISTINCTROW se omite si la consulta incluye sólo una tabla o si incluye en los resultados campos de todas las tablas.
Un poco más detallado esta en el MSDN

The DISTINCTROW keyword

Cita:
The DISTINCTROW keyword is similar to the DISTINCT keyword except that it is based on entire rows, not just individual fields. It is useful only when based on multiple tables, and only when you select fields from some, but not all, of the tables. If you base your query on one table, or select fields from every table, the DISTINCTROW keyword essentially acts as an ALL keyword.
Muy interesante pero no nos resuelve nada, entonces, veamos tu consulta.

Cita:
select distinct top 10 a.id_tema, b.tema from foro_mensajes a, foro_temas b where a.id_tema=b.id_tema order by a.fecha_creacion
Vemos que regresamos dos campos, entonces tendremos un Query resultante de solo lectura de dos columnas, y tu quieres ordenar por .... por una columna que no esta en dicho query, entonces ... ese es el problema

Si nos tomamos el tiempo de leer la ayuda de la cláusula ORDER BY, podremos constatar lo anterior dicho.

Lamento no haberte puesto atención sino hasta ahora, es que a veces lo repetido de las preguntas hacen que uno ya conteste con trivialidades a veces poco útiles.

Saludos
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 17:17.