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

No he podido con un group by AYUDA !!¡¡

Estas en el tema de No he podido con un group by AYUDA !!¡¡ en el foro de Bases de Datos General en Foros del Web. Hola Foro Tengo este problema y no he podido solucionarlo: Resulta que en la consulta que está abajo estoy agrupando por GROUP BY otorgantes1.idotorg1 Y ...
  #1 (permalink)  
Antiguo 04/10/2005, 14:07
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Exclamación No he podido con un group by AYUDA !!¡¡

Hola Foro

Tengo este problema y no he podido solucionarlo:

Resulta que en la consulta que está abajo estoy agrupando por GROUP BY otorgantes1.idotorg1
Y ordenando por ORDER BY otorgantes1.idotorg1

El problema es que debo agrupar por GROUP BY actoscliente.idactoclie
Pero cuando lo hago de esta forma me hace los siguiente:
Lo que es el nombre1 y el nombre2 los vuelve loco,
Es decir si para nombre dos hay mas de un renglón me pone el nombre de uno con el apellido del otro renglón.

Por una parte y por otra es que al agrupar así debo de ordenar por ORDER BY otorgantes1.idotorg1 y no me deja porque no esta agrupado por otorgantes1.idotorg1


Bueno espero me puedan dar una mano.
Gracias.


Esta es la consulta:


SELECT MIN(otorgantes1.idotorg1)AS idotorg1,MIN(actoscliente.idactoclie)AS idactoclie,MIN(otorgantes1.identificacionotorg1)AS identificacionotorg1,MIN(otorgantes2.identificacio notorg2)AS identificacionotorg2,
MIN(actos.nombreact)AS Acto,MIN(actoscliente.cuantia)AS cuantia,MIN(actoscliente.catastro)AS catastro,
MIN(A.nombresclient)||' '||MIN(A.apellidosclient) AS nombre1,MINaqui es donde se me cruzan al agrupar (B.nombresclient)||' '||MIN(B.apellidosclient) AS nombre2

FROM ((((((radicacion LEFT OUTER JOIN actoscliente ON radicacion.idradica=actoscliente.idradica)
LEFT OUTER JOIN actos ON actoscliente.idact=actos.idact)
LEFT OUTER JOIN ventas ON actoscliente.idactoclie=ventas.idactoclie)
LEFT OUTER JOIN otorgantes1 ON otorgantes1.idventa=ventas.idventa)
LEFT OUTER JOIN otorgantes2 ON otorgantes2.idventa=ventas.idventa)--,clientes-- A,clientes B
LEFT OUTER JOIN clientes A ON A.identificacionclient=otorgantes1.identificaciono torg1)
LEFT OUTER JOIN clientes B ON B.identificacionclient=otorgantes2.identificaciono torg2

WHERE radicacion.idradica=156
GROUP BY otorgantes1.idotorg1
ORDER BY otorgantes1.idotorg1
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #2 (permalink)  
Antiguo 05/10/2005, 04:11
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Tal como está esa select, no necesitas poner un group by, ya que son todo campos agregados.
Para evitarte problemas, cambia el "group by ... order by ..." por "order by 1".
Cuando pones el orde rby puedes indicar el orden deseado por la posición que ocupan en la select.
Sino, para que no te de problemas el order by, no le pongas "otorgantes1.idotorg1", pues el campo ya no se llama así, sino que tienes que usar el alias que le has asignado "idotrog1".
Un saludo.
__________________
Estoy contagiado de Generación-I
  #3 (permalink)  
Antiguo 05/10/2005, 07:54
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Me explico un poco:
Debo de agrupar por
GROUP BY actoscliente.idactoclie
el problema es que si lo hago así me agrupa es decir no me sale repetido idactoclie pero resulta que en los campos:

MIN(A.nombresclient)||' '||MIN(A.apellidosclient) AS nombre1,MIN(B.nombresclient)||' '||MIN(B.apellidosclient) AS nombre2

me sale lo siguiente: si hay mas de un registro para las tablas:

LEFT OUTER JOIN clientes A ON A.identificacionclient=otorgantes1.identificaciono torg1)
LEFT OUTER JOIN clientes B ON B.identificacionclient=otorgantes2.identificaciono torg2


me saca lo siguiente:
me coloca el nombre de un registro con el pellido del otro registro.
Solo me pasa cuando agrupo por actoscliente.idactoclie




Espero que me puedan dar alguna idea
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #4 (permalink)  
Antiguo 08/10/2005, 09:07
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Ayudenmennnnnnnnnnnnnnn !!!!!!!¡¡¡¡¡¡
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #5 (permalink)  
Antiguo 10/10/2005, 04:10
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Evidentemente lo que dices es así, si haces min (apellido) por un lado y min(nombre) por otro, evidentemente no te va a devolver el nombre y apellidos de una persona, sino el menor de los apellidos y el menor de los nombres. Para que te salga bien, pon MIN(A.nombresclient || A.apellidosclient)
Un saludo.
__________________
Estoy contagiado de Generación-I
  #6 (permalink)  
Antiguo 10/10/2005, 13:44
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Gracias Vice. Estaré reportando si algo sale mal

Gracias por su ayuda.
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #7 (permalink)  
Antiguo 10/10/2005, 15:19
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Ok ese era el problema.

Ahora tengo otro problema con la misma consulta

Resulta que en realidad agrupo y ordeno así:

GROUP BY actoscliente.idactoclie
ORDER BY idactoclie

El problema es que necesito ordenar por
otorgantes1.idotorg1

pero no se como hacerlo ya que no estoy agrupando por otorgantes1.idotorg1

y si agrupo así:

GROUP BY actoscliente.idactoclie,otorgantes1.idotorg1

pues no me hace nada es decir no me agrupa nada.


AUXILIOOOOOOOOOOO
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #8 (permalink)  
Antiguo 13/10/2005, 01:34
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
No tienes que ordenar por lo mismo que agrupas. Simplemente cambia el order by por el que te interesa.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #9 (permalink)  
Antiguo 13/10/2005, 15:50
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Gracias Vice
Ahora tengo otro problema:
Resulta que yo coloco los MIN para poder agrupar por un solo atributo.
porque sino me pide agrupar a cada uno...
Y ya se por sus respuetas que es por eso que se se me cruzan los apellidos y nombres, que hago para solucionar eso.
alguna idea para no utilizar min y poder agrupar por uno solo dato

Gracias por su ayuda.
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #10 (permalink)  
Antiguo 18/10/2005, 11:12
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Ayudaaaaaaaaaaaaa¡¡¡¡¡¡¡¡¡¡¡¡¡¡
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
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 12:43.