MySQL - Migración y error en GROUP BY

 
Vista:
Imágen de perfil de guillermo
Val: 3
Ha aumentado su posición en 8 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Migración y error en GROUP BY

Publicado por guillermo (2 intervenciones) el 19/06/2018 23:47:05
Hola a todos, alguien me puede orientar en resolver el siguiente problema:

Hasta hace 1 semana tenía en mi web un portal que usaba PHP 5.4 y MySQL 5.1 con motor InnoDB y todo funcionaba bien.
Decidí migrar a PHP 7 y MySQL 7. Después de varias modificaciones porque la compatibilidad no era total, me quedó el siguiente desafío:
Este código antes funcionaba
1
2
3
4
5
6
7
8
9
10
11
12
13
$query6 = "SELECT 	o.nombres 		AS nombres,
        o.apellido 		AS apellido,
        o.calle			AS calle,
        o.codigo_v		AS codigo_v,
        n.cnoti 		AS cnoti,
        o.x				AS x,
        o.y 			AS y
    FROM noticia AS n 
    INNER JOIN oyente AS o ON (o.codigo_v = n.usuario)
    WHERE (n.desde < '$hoy' OR (n.desde = '$hoy' AND n.horad < '$hora_ahora')) AND (n.hasta > '$hoy' OR (n.hasta = '$hoy' AND n.horah > '$hora_ahora')) AND n.vencido <> 'si' AND (o.x < ('$lalatitud' + 2) AND o.x > ('$lalatitud' - 2) AND o.y < ('$lalongitud' + 2) AND o.y > ('$lalongitud' - 2))
        AND n.cnoti NOT IN (SELECT	a.oferta FROM adherido AS a	WHERE a.usuario = '$usuario' AND a.oferta > 0  AND a.usuario > 0 AND a.finalizada = 'no')
    GROUP BY o.codigo_v
    ORDER BY n.fecha DESC ";

y ahora da error, solo funciona si le borro la línea del GROUP BY

Probé sacando diferentes líneas, el SELECT dentro del WHERE, todo el WHERE y nada.
Alguien tiene alguna idea de por qué el GROUP en estas condiciones da error?

Gracias
Guillermo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Migración y error en GROUP BY

Publicado por xve (1151 intervenciones) el 20/06/2018 07:57:20
Hola Guillermo, exactamente que error te devuelve?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de guillermo
Val: 3
Ha aumentado su posición en 8 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Migración y error en GROUP BY

Publicado por guillermo (2 intervenciones) el 20/06/2018 17:11:35
Me responde con el error que definí para la transacción:

$data6 = mysqli_query($dbc, $query6)
or die('Error haciendo querying apuntes.');

Me devuelve "'Error haciendo querying apuntes."
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Migración y error en GROUP BY

Publicado por leonardo_josue (414 intervenciones) el 21/06/2018 15:48:36
Hola Guillermo:

Esto que pones, no nos sirve absolutamente de nada, ya que es un error de PHP o de cualquier lenguaje de programación que estés utilizando, cosa que no tiene nada que ver con MySQL...

Lo que te pedía xve es que nos digas qué error te regresa MySQL, para esto tienes que ejecuta la consulta directamente en una consola de MySQL, sin utilizar ningún "intermedio"

Es probable creo que es porque tienes configurado el servidor para que acepte sólo agrupaciones completas, para leer más acerca de este tema, checa esta liga:

https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

Entonces, es posible que tu consulta la tengas que poner más o menos así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
  o.nombres 	AS nombres,
  o.apellido 	AS apellido,
  o.calle		AS calle,
  o.codigo_v	AS codigo_v,
  n.cnoti 		AS cnoti,
  o.x			AS x,
  o.y			AS y
FROM noticia AS n
...
GROUP BY
  o.nombres
  o.apellido
  o.calle
  o.codigo_v
  n.cnoti
  o.x
  o.y
ORDER BY n.fecha DESC

es decir, poniendo en el GROUP BY todos los campos que utilices en el SELECT y que no formen parte de una función de agrupación (COUNT, MIN, MAX, AVG, etc)

En este sentido, no entiendo bien por qué tienes que agrupar tus datos si no estás usando ninguna función de agrupación... creo que sería conveniente que nos pongas un ejemplo de tus datos y nos digas a partir de esos datos qué es lo que quieres hacer, así podremos indicarte alguna otra forma para hacerlo.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar