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

Distinc de varios campos

Estas en el tema de Distinc de varios campos en el foro de ASP Clásico en Foros del Web. Tengo una tabla en la cual voy a necesitar ver los valores (números) distintos de cuatro campos a la vez. La idea es sacar todos ...
  #1 (permalink)  
Antiguo 29/05/2008, 09:22
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Distinc de varios campos

Tengo una tabla en la cual voy a necesitar ver los valores (números) distintos de cuatro campos a la vez.
La idea es sacar todos los números, sin repetir ninguno.

Los registros pueden tener de uno a cuatro campos con números, por ejemplo:
Código:
Id    Campo1 Campo2 Campo3 Campo4
1        6     19    2       5
2        6        
3        2     5       
4        10    9     20
Me debería sacar todos los distintos:
6
2
10
19
5
9
2
20

La sentencia podría ser algo tipo:
Código:
"Select distinct(campo1,campo2,campo3,campo4) from tabla"
Lo malo es que no se si hace distinc de los cuatro a la vez o por separado, con lo que dentro de los resultados del campo1 me sacaría los distintos, pero podría haber coincidencias con los resultados sacados enel campo2, etc...

No se si me he explicado bien...
  #2 (permalink)  
Antiguo 29/05/2008, 10:25
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Respuesta: Distinc de varios campos

anexale un order by al final
Cita:
"Select distinct(campo1,campo2,campo3,campo4) from tabla order by campo1, campo2, campo3, campo4"
prueba y comenta
esta espuma....
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 29/05/2008, 12:03
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Distinc de varios campos

mmmmmmmmmmmm

no tengo idea en que BD el DISTINCT trabaje sobre campos, que yo sepa trabaja sobre toda la FILA. Cuando un SELECT tiene un DISTINCT, se le indica a la BD que el resultado no va a tener FILAS duplicadas (todos los campos iguales).

Esos paréntesis que encierran los campos ¿qué ondas con ellos?, igual a lo mejor es un FOX el cual su SQL es el menos estandar, pero si acepta ANSI, es así como dije.
  #4 (permalink)  
Antiguo 29/05/2008, 12:46
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Respuesta: Distinc de varios campos

Realmente para este problema dudo que exista una solución mediante un simple query, tendrás que aplicar lógica a esto, y por supuesto tendrías que elaborar un poco más pues este es uno de esos problemas que me parece que se ha enrredado por la solución aplicada al almacenar los datos. En fin, a ver si nos das más detalles.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 29/05/2008, 15:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Distinc de varios campos

Cita:
Iniciado por u_goldman Ver Mensaje
Realmente para este problema dudo que exista una solución mediante un simple query, tendrás que aplicar lógica a esto, y por supuesto tendrías que elaborar un poco más pues este es uno de esos problemas que me parece que se ha enrredado por la solución aplicada al almacenar los datos. En fin, a ver si nos das más detalles.

Saludos
A la hora de dar de alta desde un formulario tengo que almacenar como mínimo un número y como máximo cuatro.
Cómo lo harías tu para que luego pudieras hacer una página que te saque todos los números diferentes?

La idea es facil, pero... ando atascado xD
Mañana probaré lo que me hayais ido diciendo ;)
Gracias
  #6 (permalink)  
Antiguo 29/05/2008, 15:51
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Distinc de varios campos

1) Lee todos los campos de todas las filas de tu recordset y ve guardándolas en una tabla temporal un numero por fila y al final le haces un select distinct a esa tabla

2) Lee todos los campos de todas las filas de tu recordset y ve guardándolas en un arreglo ordenado verificando que se inserte si no existe ya
  #7 (permalink)  
Antiguo 29/05/2008, 16:21
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Respuesta: Distinc de varios campos

Cita:
Iniciado por Myakire Ver Mensaje
1) Lee todos los campos de todas las filas de tu recordset y ve guardándolas en una tabla temporal un numero por fila y al final le haces un select distinct a esa tabla

Precisamente el problema es que la aplicación no está guardando de manera correcta los datos, la tabla en realidad debería ser un solo número por fila asociado con otro elemento (usuario_id, quizás me estoy aventurando mucho), de tal manera que con un simple select distinct se pueda solucionar.

Además que el sistema actual compromete mucho los datos con la lógica de la aplicación -solo puedes almacenar 4- y permite nulos lo cuál filosóficamente hablando, serían datos desconocidos, más no "no ingresados".

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 29/05/2008, 16:44
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Distinc de varios campos

Cita:
Iniciado por u_goldman Ver Mensaje
Precisamente el problema es que la aplicación no está guardando de manera correcta los datos, la tabla en realidad debería ser un solo número por fila asociado con otro elemento (usuario_id, quizás me estoy aventurando mucho), de tal manera que con un simple select distinct se pueda solucionar.

Además que el sistema actual compromete mucho los datos con la lógica de la aplicación -solo puedes almacenar 4- y permite nulos lo cuál filosóficamente hablando, serían datos desconocidos, más no "no ingresados".

Saludos
Qué??????

Me he perdido... -.-'

Creo que probaré lo de la tabla temporal (Id,Texto) a guardar los datos en cuatro pasos (uno para cada campo) y luego hacer un distinct de esa tabla.

Se podría hacer esto creando un array? (muy sencillito, que yo con los arrays soy un poco cazurro...)

Lo malo es que va a ser una tarea lenta, ya que cada vez que te metas en la página a consultar va a hacer todo eso... Quizá sea más rápido con un array...
  #9 (permalink)  
Antiguo 29/05/2008, 16:50
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Respuesta: Distinc de varios campos

Cita:
Qué??????

Me he perdido... -.-'
Que a mi parecer, los datos deberian guardarse en algo asi:

tabla
-------
id
numero
--> de aqui en adelante me aventuro
fecha
usuario

De manera tal que mediante un simple select distinct puedas recuperarlos, si es que tu proyecto no va muy avanzado, de lo contrario, pues tendras que ingeniartelas para iterar esos datos e ir sacando valores unicos.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 29/05/2008, 16:55
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Distinc de varios campos

Cita:
Iniciado por u_goldman Ver Mensaje
Que a mi parecer, los datos deberian guardarse en algo asi:

tabla
-------
id
numero
--> de aqui en adelante me aventuro
fecha
usuario

De manera tal que mediante un simple select distinct puedas recuperarlos, si es que tu proyecto no va muy avanzado, de lo contrario, pues tendras que ingeniartelas para iterar esos datos e ir sacando valores unicos.

Saludos
Y cómo haces para almacenar en un campo de uno a cuatro números para luego poder sacar un distinct de TODOS los números insertados?

;)
  #11 (permalink)  
Antiguo 29/05/2008, 17:27
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Respuesta: Distinc de varios campos

Cita:
Iniciado por Sancas Ver Mensaje
Y cómo haces para almacenar en un campo de uno a cuatro números para luego poder sacar un distinct de TODOS los números insertados?

;)
¿Uh? Almacenar todos en un campo es lo mismo (peor) que almacenarlos en un registro con 4 campos, el modelo sugerido muestra la posible solución, es un número por registro (un solo campo).

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 29/05/2008, 17:34
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Distinc de varios campos

Cita:
Iniciado por u_goldman Ver Mensaje
¿Uh? Almacenar todos en un campo es lo mismo (peor) que almacenarlos en un registro con 4 campos, el modelo sugerido muestra la posible solución, es un número por registro (un solo campo).

Saludos
Mi jefe quiere cuatro xD
Pero se me ha ocurrido una genial idea, a ver si es viable:

Los números referencian a la Id de una tabla (la cual contiene actualmente unos 150 registros y tiene de campos Id y Nombre)
Lo que se me ha ocurrido hacer es lo siguiente, pongo el código abreviado para no perdernos en los detalles:
"Select * From tabla" 'La de Id y Nombre
while not rs.eof
"select * from tabla2 where campo1=rs("Id") or campo2=rs("Id") campo3=rs("Id") campo4=rs("Id")"
if not rs2.eof then
Response.write rs("Nombre")
end if
rs.movenext
wend

En resumidas cuentas, se recorre la primera tabla, y para cada número, busca en los cuatro campos de cada registro y si coincide en al menos uno, pues saca el nombre.

Mañana lo pruebo en el trabajo xD

Gracias a todos por vuestra aportación, mañana os narraré mis aventuras xD
  #13 (permalink)  
Antiguo 29/05/2008, 17:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Respuesta: Distinc de varios campos

Por nada y suerte...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #14 (permalink)  
Antiguo 29/05/2008, 17:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 12
Antigüedad: 16 años
Puntos: 0
Respuesta: Distinc de varios campos

Tal vez tengas razon que sea mas dificil que un simple query, que podrias hacer mediante codigo es jalar los numeros distintos de la primera columna
select distinc col1 from tabla
ya tenemos la primera parte los guardamos en una variable X
ahora esos datos los comparamos con la segunda columna
Select distinc col2 from tabla where col2 not in( variable X)
agregamos el resultado a la variable X
Repetimos esta operacion con las otras dos columnas
Select distinc col3 from tabla where col3 not in(variable X)
y listo, algo laborioso pero a mi me dio resultado
  #15 (permalink)  
Antiguo 30/05/2008, 02:25
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Distinc de varios campos

Bueno, tengo que deciros que la manera que se me ocurrió ha sido todo un éxito, así que si alguien tiene esta misma duda, ya sabrá cómo hacerlo ;)

Un saludo.
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 08:42.