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

Error en una consulta con order by.

Estas en el tema de Error en una consulta con order by. en el foro de PostgreSQL en Foros del Web. Hola tengo esta consulta Código: SELECT U.idufb,U.dinero,U.gasolina,U.idclubes,count(PXU.idufb) numprop FROM user U LEFT JOIN propertysxusers PXU ON U.idufb=PXU.idufb WHERE U.idufb IN(".$id_frieds.") GROUP BY U.nick;" pero me ...
  #1 (permalink)  
Antiguo 11/05/2011, 15:56
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Error en una consulta con order by.

Hola tengo esta consulta

Código:
SELECT U.idufb,U.dinero,U.gasolina,U.idclubes,count(PXU.idufb) numprop
                       FROM user U
                       LEFT JOIN propertysxusers PXU
                       ON U.idufb=PXU.idufb
                       WHERE U.idufb IN(".$id_frieds.")  GROUP BY  U.nick;"

pero me tira el siguiente error : ERROR: column "u.idufb" must appear in the GROUP BY clause or be used in an aggregate function at character 8.


saludos
  #2 (permalink)  
Antiguo 11/05/2011, 16:18
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años
Puntos: 236
Respuesta: Error en una consulta con order by.

Hola!,
Prueba colocando U.nick, en el SELECT, es decir:

Código SQL:
Ver original
  1. SELECT U.nick, etc, etc,
Saludos
  #3 (permalink)  
Antiguo 12/05/2011, 07:11
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Error en una consulta con order by.

Gracias, ya le coloque lo que dijeste y me dio este.

ERROR: operator does not exist: character varying = integer at character 261
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.


saludos
  #4 (permalink)  
Antiguo 12/05/2011, 18:26
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años
Puntos: 236
Respuesta: Error en una consulta con order by.

Hola!,
Prueba así:
Código SQL:
Ver original
  1. SELECT U.idufb,U.dinero,U.gasolina,U.idclubes,COUNT(PXU.idufb) numprop
  2.                        FROM USER U
  3.                        LEFT JOIN propertysxusers PXU
  4.                        ON U.idufb=PXU.idufb
  5.                        WHERE U.idufb IN(".$id_frieds.")  GROUP BY  U.nick,U.idufb;"
Lo que hize fué colocar U.idufb en GROUP BY.

Saludos!.

Atención: Para seguir ayudandote, agradece mis mensajes para acceder désde notificaciónes ó enviame un MP.
  #5 (permalink)  
Antiguo 14/05/2011, 21:10
 
Fecha de Ingreso: marzo-2011
Ubicación: Bogotá
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Error en una consulta con order by.

hola

La premisa es la siguiente: todos los campos que intervienen en el SELECT, salvo los de agrupamiento (min,max,count,sum,etc..) deben figurar en la clausula GROUP BY

por lo tanto U.idufb,U.dinero,U.gasolina,U.idclubes deben ademas figurar en el GROUP BY.

Así debería funcionar,

SELECT U.idufb,U.dinero,U.gasolina,U.idclubes,count(PXU.i dufb) numprop
FROM user U
LEFT JOIN propertysxusers PXU
ON U.idufb=PXU.idufb
WHERE U.idufb IN(".$id_frieds.") GROUP BY U.nick,U.idufb,U.dinero,U.gasolina,U.idclubes;

La pregunta es si entrega el resultado deseado ya que se esta agrupando por un campo adicional (U.nick) que no esta presente en el SELECT...
  #6 (permalink)  
Antiguo 16/05/2011, 07:20
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Error en una consulta con order by.

Pues si asi funciona , colocando todos los campos en el group funciona mil gracias



saludos
  #7 (permalink)  
Antiguo 16/05/2011, 16:00
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Error en una consulta con order by.

Hola todavia no entiendo bn como es que funcionan los select en pg pues tengo esta consulta

SELECT U.dinero,U.gasolina,U.idclubes,count(PXU.iduFB) numprop
FROM user U
LEFT JOIN propertysxusers PXU
ON U.iduFB=PXU.iduFB
WHERE U.iduFB='1'

y me tira este error

ERROR: column "u.dinero" must appear in the GROUP BY clause or be used in an aggregate function at character 8

pero nisiquiera utilizo group by.


saludos
  #8 (permalink)  
Antiguo 16/05/2011, 16:12
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Error en una consulta con order by.

En cuanto usas una función de agregación en un select, automáticamente te obliga a poner los campos en group by o usar funciones de agregación sobre los campos que aparezcan en el select.

En tu consulta, tendrías que poner U.dinero en el GROUP BY y todos los demas campos. Es decir, tres opciones: en GROUP BY, en el select con funciones de agregación o no ponerlos en ningún sitio.

Un ejemplo (puede ser que no sea lo que quieras)

Código MySQL:
Ver original
  1. SELECT U.dinero,U.gasolina,U.idclubes,count(PXU.iduFB) numprop
  2. LEFT JOIN propertysxusers PXU
  3. ON U.iduFB=PXU.iduFB
  4. WHERE U.iduFB='1'
  5. GROUP BY U.dinero,U.gasolina,U.idclubes

Etiquetas: order
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 16:11.