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

ORDER By Invalida a GROUP en Mysql

Estas en el tema de ORDER By Invalida a GROUP en Mysql en el foro de Mysql en Foros del Web. BUenas de nuevo, despues de haber encontrado la solucion a un problema gracias a los del foro ahora se me ha presentado otro problema con ...
  #1 (permalink)  
Antiguo 14/09/2012, 15:19
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
ORDER By Invalida a GROUP en Mysql

BUenas de nuevo, despues de haber encontrado la solucion a un problema gracias a los del foro ahora se me ha presentado otro problema con la misma consulta sql.

Este es el codigo:
Código PHP:
SELECT news_acciones.action_innews_acciones.action_nick_idnews_acciones.action_idnews_acciones.action_fechausuarios.nickusuarios.sexousuarios.avatar 
FROM  news_acciones
usuarios
WHERE usuarios
.id=news_acciones.action_nick_id && news_acciones.action_nick_id IN($amisql) && news_acciones.action_in='tema musical' OR news_acciones.action_in='dedicatoria' OR news_acciones.action_in='upload-mp3' OR news_acciones.action_in='add-mp3' OR news_acciones.action_in='add-playlist' 
GROUP BY news_acciones.action_nick_id
ORDER BY news_acciones
.fecha
DESC 
El caso es que los resultados están en orden de fecha desde lo mas nuevo hasta lo mas anterior, pero en la sentencia uso la sigla GROUP el cual evita que salgan registros duplicados, el problema es que de los registros duplicados me sale el primero en relacion de la fecha.

Intentando aclarar, del grupo formado (GROUP) me sale el mas anterior y no asi el mas nuevo como manda el ORDER BY, pero fuera del grupo (los unicos registros que salen) si salen como ordena el ORDER BY. no se si me explico bien

ejemplo:
tengo:
ID | nombre
1 | pepito
2 | juanito
3 | juanito
4 | julanito

Con el ORDER BY id DESC me sale:

4 | julanito
3 | juanito
2 | juanito
1 | pepito

Hasta ahi bien el orden... Pero si agrego GROUP para eliminar registros duplicados me sale:

4 | julanito
2 | juanito
1 | pepito

que me sale el juanito del ID 2 y no asi el del ID 3 que se espera con la sentencia ORDER BY

Que me sugieren?

saludos.
  #2 (permalink)  
Antiguo 14/09/2012, 15:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ORDER By Invalida a GROUP en Mysql

Sugerencia: primero ordenar y luego agrupar. Prueba a ver si así:
SELECT * FROM (SELECT news_acciones.action_in, news_acciones.action_nick_id, news_acciones.action_id, news_acciones.action_fecha, usuarios.nick, usuarios.sexo, usuarios.avatar
FROM news_acciones, usuarios
WHERE usuarios.id=news_acciones.action_nick_id && news_acciones.action_nick_id IN($amisql) && news_acciones.action_in='tema musical' OR news_acciones.action_in='dedicatoria' OR news_acciones.action_in='upload-mp3' OR news_acciones.action_in='add-mp3' OR news_acciones.action_in='add-playlist'
ORDER BY news_acciones.fecha
DESC) GROUP BY news_acciones.action_nick_id
  #3 (permalink)  
Antiguo 14/09/2012, 15:31
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: ORDER By Invalida a GROUP en Mysql

he probado el codigo, con comillas simples dentro del parentesis del centro, asi mismo con comillas dobles y sin comillas y me da igual error

mysql_query("SELECT * FROM (SELECT news_acciones.action_in, news_acciones.action_nick_id, news_acciones.action_id, news_acciones.action_fecha, usuarios.nick, usuarios.sexo, usuarios.avatar FROM news_acciones, usuarios WHERE usuarios.id=news_acciones.action_nick_id && news_acciones.action_nick_id IN($amisql) && news_acciones.action_in='tema musical' OR news_acciones.action_in='dedicatoria' OR news_acciones.action_in='upload-mp3' OR news_acciones.action_in='add-mp3' OR news_acciones.action_in='add-playlist' ORDER BY news_acciones.action_fecha DESC) GROUP BY news_acciones.action_nick_id");

Última edición por fido-strike; 14/09/2012 a las 15:32 Razón: codigo
  #4 (permalink)  
Antiguo 14/09/2012, 16:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ORDER By Invalida a GROUP en Mysql

Prueba la consulta con valores absolutos y sin código PHP. Luego ya podrás comprobar qué comilla te falla en PHP.
Lo primero es asegurarte de que la consulta devolverá lo que quieres. He quitado && y modificado algo la consulta. También he retocado el uso de paréntesis, aunque no sé cuál es exactamente tu lógica de consulta para el AND y los OR.
SELECT * FROM (SELECT news_acciones.action_in, news_acciones.action_nick_id, news_acciones.action_id, news_acciones.action_fecha, usuarios.nick, usuarios.sexo, usuarios.avatar
FROM news_acciones INNER JOIN usuarios
ON usuarios.id=news_acciones.action_nick_id WHERE news_acciones.action_nick_id IN('valor1', 'valor2') AND (news_acciones.action_in='titulomusical' OR news_acciones.action_in='dedicatoria' OR news_acciones.action_in='upload-mp3' OR news_acciones.action_in='add-mp3' OR news_acciones.action_in='add-playlist')
ORDER BY news_acciones.fecha
DESC) GROUP BY news_acciones.action_nick_id
  #5 (permalink)  
Antiguo 15/09/2012, 03:41
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: ORDER By Invalida a GROUP en Mysql

JOoo..!! ya no puedo mas ayer me quede hasta las 01:00 de la madrugada intentandolo, se que algun experto en Mysql puede ayudarme, pero intento con Max en fecha, intento con subconsultas, con una y otra manera pero no logro conseguir lo que quiero, PLS SOCORRO!!!

Dejo el codigo completo del script que estoy haciendo:

<?php
$Tamigos = mysql_query("SELECT id_user FROM amigos WHERE amigos='$user_nick' && aprovacion='si'");
$Toamigos = mysql_num_rows($Tamigos);
$TituloNovedades = array("usuarios","tus amigos");
if($Toamigos>=3){
$minimo = 1;
}else{
$minimo = 0;
}

//Hasta aqui compruebo la cantidad minima de amigos (3), al mismo tiempo hago la consulta para sacar a todos los amigos del usuario para sacar sus respectivas actividades. Luego continuo si se tiene un minimo de 3 amigos

if($minimo==1){
while($amigos = mysql_fetch_assoc($Tamigos)){
$idam[] = $amigos[id_user];
}
foreach($idam as $i=>$am){
if($i==0)
$amisql = $am;
else
$amisql .= ", ".$am;
}

$actions = "'tema musical', 'dedicatoria', 'upload-mp3', 'add-mp3', 'add-playlist'";

//Hasta aqui ya saco los IDS de los amigos y lo pongo en una cadena para poder usarlo en IN() de la consulta mysql. Tambien convierto las condiciones extras en $actions para acortar el codigo mysql. Prosigo con la sentencia y despues la consulta con $sql
//Aqui viene el problema, en la consulta, aunque la consulta se realiza y muestra resultados, el caso es que no lo hace en el orden que quiero.

$sql = "SELECT news_acciones.action_in, news_acciones.action_nick_id, news_acciones.action_id, usuarios.nick, usuarios.sexo, usuarios.avatar, MAX(news_acciones.action_fecha) as newfecha ";
$sql .= "FROM news_acciones INNER JOIN usuarios ON usuarios.id=news_acciones.action_nick_id ";
$sql .= "WHERE news_acciones.action_nick_id IN(".$amisql.") AND news_acciones.action_in IN(".$actions.") ";
$sql .= "GROUP BY news_acciones.action_nick_id ORDER BY newfecha DESC LIMIT 5";

$NovedadesAmigos = mysql_query($sql);

}
?>

Pero el resultado sigue siendo el mismo, me devuelve de ultimo en fecha hacia atras, pero dentro del GROUP BY me saca el primero de cada grupo de registros repetidos, y yo lo que quiero es que respete tambien al ORDER BY DESC

Por si acaso dejo otro codigo que sigue a esto para que tengan idea de lo que hago:
<?php
while($noveam = mysql_fetch_assoc($NovedadesAmigos)){
if(empty($noveam[avatar])){
if($noveam[sexo]==0)
$avatarnove = "http://music-strike.net/tmp/member/sin_foto.jpg";
else
$avatarnove = "http://music-strike.net/tmp/member/sin_foto1.jpg";
}else{
$avatarnove = $noveam[avatar];
}
$actividades = array(
"tema musical" => "comento en el tema",
"dedicatoria" => "dedico una canci贸n a",
"upload-mp3" => "subio el tema",
"add-mp3" => "agrego a su playlist el tema",
"add-playlist" => "agrego a su favoritos el grupo/artista",
);

//estos arrays anteriores son solo para el contenido de los resultados.

$xacti = $noveam[action_in];
$actividad = $actividades[$xacti];
if($xacti=="tema musical"){
$datosnovedad = mysql_query("SELECT id, artista, titulo FROM music_local WHERE id='$noveam[action_id]'");
$dano = mysql_fetch_assoc($datosnovedad);
$danoart = ucwords(str_replace('_',' ',str_replace('-',' ',$dano[artista])));
$danotit = ucwords(str_replace('_',' ',str_replace('-',' ',$dano[titulo])));
$danotitulo = $danoart.' - '.$danotit;
}

//Aqui hago otra consulta con cada resultado para dar un enlace y mostrar donde se ha realizado la actividad. Posteriormente paso a imprimir resultados.

echo '<div class="filanove">';
echo '<div id="img-aminove">';
echo '<a href="usuarios.php?id=registrados&u='.$noveam[action_nick_id].'" title="'.$noveam[nick].'"><img src="'.$avatarnove.'" alt="'.$noveam[nick].'"></a>';
echo '</div>';
echo '<div id="details-aminove">';
echo '<a href="usuarios.php?id=registrados&u='.$noveam[action_nick_id].'" title="'.$noveam[nick].'">'.$noveam[nick].'</a> '.$actividad.' '.$danotitulo;
echo "</div>";
echo '</div>';



}

?>

Espero puedan ayudarme please, ya he buscado en todos lados, pero siempre hay ejemplos de formar grupos con indices o bien con fechas, pero no con nombres de usuarios, ya que este me toma como ordenamiento por letra y no por numero.

Saludos.
  #6 (permalink)  
Antiguo 15/09/2012, 04:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ORDER By Invalida a GROUP en Mysql

Vamos por lo primero: En este foro no se debe ni se permite poner código de programación en ningún lenguaje (Normas del Foro de Bases de Datos).
- No aporta nada.
- Ensucia el SQL que necesitamos analizar.
- Esconde problemas potenciales en variables cuyos contenidos se desconocen.
- No todos los foristas de este subfor programan (puedes ser DBA sin jamás programar), y puede que los que lo hagan no usen el lenguaje que plantean.

¿Se comprendió?

Bien.

Ahora, vamos al problema:

Cita:
El caso es que los resultados están en orden de fecha desde lo mas nuevo hasta lo mas anterior, pero en la sentencia uso la sigla GROUP el cual evita que salgan registros duplicados, el problema es que de los registros duplicados me sale el primero en relacion de la fecha.

Intentando aclarar, del grupo formado (GROUP) me sale el mas anterior y no asi el mas nuevo como manda el ORDER BY, pero fuera del grupo (los unicos registros que salen) si salen como ordena el ORDER BY. no se si me explico bien
Eso es un efecto común del MySQL pr la forma en que implementa el GROUP BY, es un problema que se soluciona simplemente con lo que ya @jurena te indicó: Primero se ordena en una subconsulta y recién entonces se agrupa en la exterior.

Cita:
he probado el codigo, con comillas simples dentro del parentesis del centro, asi mismo con comillas dobles y sin comillas y me da igual error
Las comillas simples (en realidad se llaman apóstrofos) y las dobles (que son las verdaderas comillas), tienen diferente uso. De acuerdo a la configuración estandar del servidor de MySQL las comillas pueden ser interpretadas como nombres de columna, y eso te daría un serio problema.
Por otro lado, no aclaras qué error es el que te da.... ¿Supones que nosotros podemos adivinar lo que estás leyendo?

La consulta que propones es esta:
Código MySQL:
Ver original
  1.     (SELECT
  2.         news_acciones.action_in,
  3.         news_acciones.action_nick_id,
  4.         news_acciones.action_id,
  5.         news_acciones.action_fecha,
  6.         usuarios.nick,
  7.         usuarios.sexo,
  8.         usuarios.avatar
  9.     FROM news_acciones, usuarios
  10.     WHERE
  11.         usuarios.id=news_acciones.action_nick_id
  12.         && news_acciones.action_nick_id IN($amisql)
  13.         && news_acciones.action_in='tema musical'
  14.         OR news_acciones.action_in='dedicatoria'
  15.         OR news_acciones.action_in='upload-mp3'
  16.         OR news_acciones.action_in='add-mp3'
  17.         OR news_acciones.action_in='add-playlist'
  18.     ORDER BY news_acciones.action_fecha DESC)
  19. GROUP BY news_acciones.action_nick_id
Así como está escrita, conque cualquiera de estos valores seta verdadero devovlerá el registro, por lo que parece que no manejas bien la logica del WHRE:
Código MySQL:
Ver original
  1. OR news_acciones.action_in='dedicatoria'
  2.         OR news_acciones.action_in='upload-mp3'
  3.         OR news_acciones.action_in='add-mp3'
  4.         OR news_acciones.action_in='add-playlist'
Si lo ponemos así tiene más sentido:
Código MySQL:
Ver original
  1.     (SELECT
  2.         NA.action_in,
  3.         NA.action_nick_id,
  4.         NA.action_id,
  5.         NA.action_fecha,
  6.         U.nick,
  7.         U.sexo,
  8.         U.avatar
  9.     FROM news_acciones NA INNER JOIN usuarios U ON U.id = NA.action_nick_id
  10.     WHERE
  11.         NA.action_nick_id IN($amisql)
  12.         AND (NA.action_in='tema musical'
  13.         OR NA.action_in='dedicatoria'
  14.         OR NA.action_in='upload-mp3'
  15.         OR NA.action_in='add-mp3'
  16.         OR NA.action_in='add-playlist' )
  17.     ORDER BY NA.action_fecha DESC)
  18. GROUP BY NA.action_nick_id
La consulta sí debería devolverte las fecha más recientes de cada nik, tal como pides. La única condición es que la fecha sea una columna DATE o DATETIME.
Ahora bien, ¿cuál es el problema usándolo así?
¿Probaste usando phpMyadmin sólo la sentencia y verificando con datos reales, en lugar de usar la variable $amisql, como te dijo @jurena?
Porque hasta ahora no has respondido esa ni otras preguntas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 15/09/2012, 04:52
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: ORDER By Invalida a GROUP en Mysql

Disculpa gnzsoloyo, lo de las normas, siempre quize poner codigos como los tuyos pero al editar los mensajes no encuentro el boton para esos cuadros de mysql tan ordenados que pones tu, si podrias indicarme por favor, tampoco es que sea partidario de poner monton de codigos en los mensajes, tienes razon se ve desordenado e incomprensible, pero para tratar de hacer entender lo que quiero hacer tenia que ponerlo, de todos modos voy a tener mas en cuenta esas normas.

Y si probé como me dijo jurena en PhpMyadmin, y siempre me daba el mismo resultado erroneo, pidiendo que las tablas tienen que tener tambien alias o algo asi, que no comprendia, de todos modos creo que se referia a lo que tu haz hecho, poner una abreviatura (o alias) a las tablas.

Sinceramente no me relaciono casi nunca personalmente con otros programadores, por lo cual no se mucho sobre los terminos que se usan para los signos o escrituras que empleo, nisiquiera estoy seguro si se pronuncia yavascript o simplemente de forma literal java, poco a poco voy aprendiendo respecto a ello, lo mio es puro codigos aunque sepa su funcionalidad no se como se podrian llamar xD.

De todos modos, sigo aprendiendo gracias a ustedes, de verdad estoy agradecido, si se lo suficiente ahora es por que he aprendiendo solo desde 0 con ustedes, asi tambien cuando tengo tiempo disponible siempre trato de ayudar a los que puedo en este foro. con decirte que mi primera web estaba en Freewebs donde ahi ni te permiten nada de programacion y todo el HTML esta automatizado, y 5 años despues podria decir que he aprendido mucho.

Gracias..

Respecto al cuadro de dialogo que usas para poner codigos Sql, podrias decirme cual es? por que cualquiera que use, me sale solo la caja de texto (txtarea) y ahi no se ve bien como el tuyo.
  #8 (permalink)  
Antiguo 15/09/2012, 05:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ORDER By Invalida a GROUP en Mysql

Cita:
Respecto al cuadro de dialogo que usas para poner codigos Sql, podrias decirme cual es? por que cualquiera que use, me sale solo la caja de texto (txtarea) y ahi no se ve bien como el tuyo.
¿Y no has visto el combo donde dice "Highlight"?
Cita:
nisiquiera estoy seguro si se pronuncia yavascript o simplemente de forma literal java
JavaScript es una cosa y Java es otra. Estarán emparentados, pero no se usan ni para lo mismo, ni en el mismo contexto.
Por lo demás el cómo se pronuncien es irrelevante para la escritura y depende de los modismos coloquiales de quienes trates. Yo lo escucho de ambas formas en los mismos sitios.
Cita:
Y si probé como me dijo jurena en PhpMyadmin, y siempre me daba el mismo resultado erroneo, pidiendo que las tablas tienen que tener tambien alias o algo asi, que no comprendia, de todos modos creo que se referia a lo que tu haz hecho, poner una abreviatura (o alias) a las tablas.
Mmmm... sí.
Es un olvido lamentable.
Toda tabla derivada (aquella que es resultado de una consulta y que es fuente de otra consulta mayor, debe forzosamente tener su propio alias. Es algo general en todos los DBMS.
Así que el código sería:
Código MySQL:
Ver original
  1.     (SELECT
  2.         NA.action_in,
  3.         NA.action_nick_id,
  4.         NA.action_id,
  5.         NA.action_fecha,
  6.         U.nick,
  7.         U.sexo,
  8.         U.avatar
  9.     FROM news_acciones NA INNER JOIN usuarios U ON U.id = NA.action_nick_id
  10.     WHERE
  11.         NA.action_nick_id IN($amisql)
  12.         AND (NA.action_in='tema musical'
  13.         OR NA.action_in='dedicatoria'
  14.         OR NA.action_in='upload-mp3'
  15.         OR NA.action_in='add-mp3'
  16.         OR NA.action_in='add-playlist' )
  17.     ORDER BY NA.action_fecha DESC) T1
  18. GROUP BY action_nick_id
donde "T1" es el alias de la tabla.
Presta atención a que eliminé el alias del campo del ORDER BY, porque en ese contexto ese alias deja de ser accesible.

REspecto a los resultados, sería buena idea que capturaras una muestra de las tablas de datos y de el resultado de la consulta, lo postees aquí y podamos ver a qué te refieres con que no sale lo esperado.
Finalmente: El LIMIT tiene un impacto algo complicado cuando trabajas con estas subconsultas. Ponlo sólo en la exterior, no en la interior.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 15/09/2012, 05:13
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: ORDER By Invalida a GROUP en Mysql

Saben si el codigo es valido para la version 3.4.10.1 de Mysql? quiza ese sea el problema, ya que aunque intente modificar el codigo, y cambiar el orden de la fecha por el id de la actividad me da el mismo error:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT Â Â Â Â NA.id, Â Â Â Â NA.action_in, Â Â Â Â NA.action_ni' at line 3

Aunque en la linea 3 yo no veo nada. si fuese por la version, entonces tendria que actualizar haber que pasa.
  #10 (permalink)  
Antiguo 15/09/2012, 05:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ORDER By Invalida a GROUP en Mysql

Creo que las subconsultas se utilizan en MySQL desde la versión 4.1
https://dev.mysql.com/doc/refman/5.5/en/subqueries.html
Pido disculpas por el olvido del alias... Se me pasó a mí.

Última edición por jurena; 15/09/2012 a las 05:39
  #11 (permalink)  
Antiguo 15/09/2012, 05:51
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: ORDER By Invalida a GROUP en Mysql

Bueno, dan resultados, y para que se den idea como dice @gnzsoloyo esta es una copia de la tabla, estan seleccionados solo con los ids de los amigos un usuario, por eso los IDs estan entresaltados, y es la ultima lista de toda la tabla:

id action_in action_nick_id action_fecha action_id action_previsu
1598 tema musical 6754 1329212812 1572 YEAAAAAAA IM L
1604 tema musical 6754 1329305289 7238 HAHAHAHHAH COMO
1696 tema musical 6754 1330143861 277 REMEMBER THIS S
1697 tema musical 6754 1330144718 19930 ESTA CANCION ES
1796 tema musical 7437 1331227115 14000 aguante bon jov
1806 tema musical 5394 1331464742 19247 que tal he.....
1828 tema musical 7437 1331719476 16806 el tema aguante
1829 tema musical 7437 1331719917 4870 verdad que esta
1833 tema musical 7437 1331739376 16806 encerio .......
1835 tema musical 7437 1331742620 172 aguante the kil
1836 tema musical 7437 1331742649 172 de nada
1865 tema musical 7437 1331909109 6335 aguante karajo
1869 tema musical 3164 1331940842 15138 esta bueno el t
1902 tema musical 10 1332359031 15138 son un par de l
1959 tema musical 8003 1332780808 2000 esta padrisimoo
2008 tema musical 8132 1333064632 15364 un temon un or
2035 tema musical 51 1333298492 6242 que le gusta? e
2111 tema musical 8377 1333916705 11801 htug
2115 tema musical 8377 1333922848 3226 megustad buena
2120 tema musical 8377 1333928252 12843 ttbchv
2121 tema musical 8377 1333928551 12859 lind..
2122 tema musical 8377 1333928695 12870 sssiii buen
2742 tema musical 13477 1343298768 38944 Que razon que
2743 tema musical 13477 1343301276 19522 Canción genial

como ven, los numeros tanto de la fecha como de los ids de registros estan ordenados, pero hay usuarios que tienen actividades consecutivas, y en los resultados quiero que me muestre por orden de los mas ultimo hasta lo mas viejo, lo hace, pero el GROUP BY hace que dentre el grupo salga el primero (por lo menos eso hacia, ahora con el codigo de @gnzsoloyo) ahora me salen los ultimos, pero ahora salen intercalados al id o a la fecha, es decir, todos los resultados estan de lo mas nuevo a lo mas viejo (DESC) tanto con el ORDER y con el GROUP, pero pareciera que el GROUP toma grupos saltandose algun id hacia atras.

No se si estara permitido, pero para que vean la pagina de prueba, esta en la web de Music-strike, si ponen en google les sale y al index le cambian la pagina probando-pagina.php

Si se fijan ahi poniendo el puntero encima del usuario, en la url (GET[u])veran que su ID es 10, pero en la tabla el ultimo usuario es 13477 luego viene recien el usuario con el id 13477, despues le sigue el usuario 3164 cuando el tercer resultado deberia ser 8377, y asi sucesivamente, el resultado deberia ser: 13477, 8377(con id 2122), 51, 8132.... obviamente que dentro del GROUP se toma el ultimo registro.

Espero este claro

Última edición por fido-strike; 15/09/2012 a las 06:16 Razón: Solucionado
  #12 (permalink)  
Antiguo 15/09/2012, 06:20
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: ORDER By Invalida a GROUP en Mysql

Al fin!!!!

Joer, despues tanto, al fin se pudo realizar lo que quiero, disculpen las molestias de verdad, pero ya lo he solucionado.

Por si a alguien le sirve, es que dentro de la tabla creda T1 estaba acomodado bien, pero en la consulta exterior solo estaba pidiendose, GROUP By sin aclarar en que orden, pues solo faltaba eso, a lo que queda el codigo completo incrementando al de @gnzsoloyo, seria:

Código MySQL:
Ver original
  1. * * (SELECT
  2. * * * * NA.action_in,
  3. * * * * NA.action_nick_id,
  4. * * * * NA.action_id,
  5. * * * * NA.action_fecha,
  6. * * * * U.nick,
  7. * * * * U.sexo,
  8. * * * * U.avatar
  9. * * FROM news_acciones NA INNER JOIN usuarios U ON U.id = NA.action_nick_id
  10. * * WHERE
  11. * * * * NA.action_nick_id IN($amisql)
  12. * * * * AND (NA.action_in='tema musical'
  13. * * * * OR NA.action_in='dedicatoria'
  14. * * * * OR NA.action_in='upload-mp3'
  15. * * * * OR NA.action_in='add-mp3'
  16. * * * * OR NA.action_in='add-playlist' )
  17. * * ORDER BY NA.action_fecha DESC) T1
  18. GROUP BY action_nick_id

Jejej, tambien ya se poner el cuadro.

Gracias a ambos, cualquier cosa que pueda ayudarles, estoy aqui o MP.

saludos..

Etiquetas: group, order, registros, select, sql
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 04:11.