Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Como hacer una consulta

Estas en el tema de Como hacer una consulta en el foro de Bases de Datos General en Foros del Web. Wenas: Tengo una tabla de la que tengo que sacar 4 campos de los registros q cumplan la condicion de q la "unión" de dos ...
  #1 (permalink)  
Antiguo 22/09/2004, 06:47
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 4 meses
Puntos: 1
Pregunta Como hacer una consulta

Wenas:

Tengo una tabla de la que tengo que sacar 4 campos de los registros q cumplan la condicion de q la "unión" de dos de estos campos sea unica, es decir, un 'distinct'.

Cuando digo "unión" no quiero decir 'campo1+campo2', quiero decir q pretendo obtener los registros en los que el campo1 y el campo2 sean distintos.

Ejemplo:
Código:
  
campo1        campo2             campo3                  campo4
pepe            1                cx                      dd
pepe            1                dssdc                   jcask
pepe            2                edddf                   eed
pepe            1                lkllñ                   lkkl
juan            1                dckj                    ejkee
juan            1                dckddd                  edjkee
juan            2                dmdmdd                  mnmnme
y prentendo obtener
Código:
pepe            1                cx                      dd
pepe            2                edddf                   eed
juan            1                dckj                    ejkee
juan            2                dmdmdd                  mnmnme
Como veis los devueltos son unicos para 'pepe' y 1, 'pepe' y 2, 'juan' y 1, y 'juan' y 2.

Con 'select distinct campo1,campo2 from tabla' saco los registros que quiero, pero también necesito los campos campo3 y campo4.

Si los añado a la lista de selección, en cuanto haya valores que lo puedan provocar, devuelve registros = en lo que se refiere a los campos 1 y 2.

He probado con in, con exists, con any, etc., y na'.

campo1 y campo2 son de tipo varchar e int respectivamene.

Espero haberme explicado.

¿Se os ocurre como resolverlo?.

Salu2 y gracias.
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender

Última edición por fjmasero; 22/09/2004 a las 08:11
  #2 (permalink)  
Antiguo 23/09/2004, 01:11
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 4 meses
Puntos: 1
¿Es q nadie va a ayudarne?
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
  #3 (permalink)  
Antiguo 23/09/2004, 02:28
 
Fecha de Ingreso: septiembre-2004
Ubicación: Valencia
Mensajes: 39
Antigüedad: 19 años, 7 meses
Puntos: 0
una cosa q no entiendo, para cada par de campos 1 y 2, solo quieres obtener el primero? es decir, pq para "pepe" y "1" sacas cx y no dsscd?
Has probado a agrupar por campo1 y campo2?
  #4 (permalink)  
Antiguo 23/09/2004, 03:26
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 4 meses
Puntos: 1
Me da lo mismo.

Lo q pretendo es consegur los "unicos" entre campo1 y campo2.

Con un ejemplo con "nombres" a lo mejor queda + claro.

Tengo tabla con los campos Descripcion, IDEmpresa, Fecha, ID.

Necesito obtener las "unicas" descripciones de cada empresa, lo cual es facil con select distinct Descripcion,IDEmpresa ..., pero de las filas que devolvería esta consulta, también necesito su Fecha y su ID.

Es decir si en la empresa 1 tengo las descripciones aaa, bbbb, aaa, bbbb, me devolvería aaa, bbbb, pero de estos, tb quiero su ID y su Fecha.

Además, para "arreglarlo", me piden que lo ordene por la Fecha.

Ya se q es un poco raro, pero dado el diseño de la base de datos q me he encontrado, no veo otra forma.

Salu2
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender

Última edición por fjmasero; 23/09/2004 a las 03:28
  #5 (permalink)  
Antiguo 24/09/2004, 04:41
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 4 meses
Puntos: 1
ayudaaaaaaaaaaaaaaa
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
  #6 (permalink)  
Antiguo 28/09/2004, 06:26
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 19 años, 7 meses
Puntos: 0
Desde luego el diseño es raro, pero quizas esto te sirva:

SELECT c1, c2, First(c3) AS Primero3, First(c4) AS Primero4
FROM Tabla1
GROUP BY c1, c2;
  #7 (permalink)  
Antiguo 28/09/2004, 07:50
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 4 meses
Puntos: 1
¿First? ¿Es una función de SQL Server?.
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
  #8 (permalink)  
Antiguo 28/09/2004, 09:04
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 19 años, 7 meses
Puntos: 0
Perdón, eso es access, en sql emplea mix() o max()
  #9 (permalink)  
Antiguo 01/10/2004, 09:30
 
Fecha de Ingreso: septiembre-2004
Mensajes: 36
Antigüedad: 19 años, 7 meses
Puntos: 0
Hola,

Creo que es mas simple que todo eso...

Si lo que quieres es agrupar todos los campos que sean iguales en un solo registro solo tienes que cambiar las propiedades de la consulta a Mostrar Registros Únicos.

Si además quieres añadir a esas filas únicas otro campo relacionado (como fecha) lo puedes añadir desde otra tabla (o duplicando la misma) si está relacionada debidamente.

Saludos.

Última edición por Carbontek; 01/10/2004 a las 09:34
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 23:28.