Ver Mensaje Individual
  #8 (permalink)  
Antiguo 06/12/2010, 11:00
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: distinct + top + newid() dolor de cabeza :S

Buenos días sandrox23, cuando un id es asignado a más de una persona me supongo que no te importa cuál nombre se muestre, lo único que quieres es que no se repita el id correcto??? creo que lo puedes hacer así:

En primer lugar obtendrías 5 id's distintos de tu tabla, esto lo puedes hacer así

Código SQL:
Ver original
  1. SELECT top 5 DISTINCT id FROM TuTabla WHERE id <> 0

Ahora, con esto lo que deberías es asignarle el nombre para cada id, el problema es que al tener una relación uno a muchos si lo haces con un INNER JOIN se duplicaría el registro. Sin embargo lo puedes hacer con una subconsulta, trayendo solo el TOP 1

Código SQL:
Ver original
  1. SELECT top 1 R2.nombre FROM TuTabla R2
  2. WHERE R2.id = 1234445556
  3. ORDER BY newid()

Esta consulta te traería aleatoriamente los nombres de jorgito o colitox, que son los que tienen asignadas el id 1234445556. Ahora, si unes las dos ideas que te acabo de dar puedes generar una consulta así:

Código SQL:
Ver original
  1. SELECT id, (
  2. SELECT top 1 R2.nombre FROM TuTabla R2
  3. WHERE R2.id = R1.id ORDER BY newid()
  4. ) AS nombre
  5. FROM (SELECT Top 5 DISTINCT id FROM TuTabla) R1
  6. ORDER BY newid()

Analízala un poco para ver si es lo que quieres, y si continuas con problemas lo comentas en el foro.

Saludos
Leo.