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

orden de una Sentencia en SQL

Estas en el tema de orden de una Sentencia en SQL en el foro de Mysql en Foros del Web. tengo la siguiente sentencia Código PHP: SELECT  *  FROM compras WHERE estado != 0 GROUP BY idcliente  y me funciona perfectamente pero necesito que me muestre los registros ordenados por id. ...
  #1 (permalink)  
Antiguo 16/07/2008, 10:00
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
orden de una Sentencia en SQL

tengo la siguiente sentencia

Código PHP:
SELECT FROM compras WHERE estado!=0 GROUP BY idcliente 
y me funciona perfectamente pero necesito que me muestre los registros ordenados por id.

algo como

Código PHP:
SELECT FROM compras WHERE estado!=0 GROUP BY idcliente ORDER BY id DESC 
pero no me hace nada queda en el mismo orden.

alguna idea Gracias.

Una imagen de como lo muestra en este momento


Última edición por Andres_hlan; 16/07/2008 a las 10:32
  #2 (permalink)  
Antiguo 16/07/2008, 10:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: orden de una Sentencia en SQL

¿Que tipo de campo es ID en la tabla?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/07/2008, 10:23
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

es INT principal y autoincrement
  #4 (permalink)  
Antiguo 16/07/2008, 10:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: orden de una Sentencia en SQL

A ver si esto te funciona...

SELECT * FROM compras c INNER JOIN (SELECT idcliente FROM compras WHERE estado!=0 GROUP BY idcliente) T1 ON t1.idcliente = c.idcliente WHERE c.estado!=0 ORDER BY c.id DESC

No obstante, tal vez deberías darnos más información sobre las tablas.
  #5 (permalink)  
Antiguo 16/07/2008, 10:27
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

#4 Gracias por tu respuesta pero igual no me muestra los registros ordenados por ID y ahora tampoco me los esta agrupando por idcliente
  #6 (permalink)  
Antiguo 16/07/2008, 10:35
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: orden de una Sentencia en SQL

Esa consulta con group by no tiene sentido. ¿Para que agrupas por cliente si muestras todos los datos?
O sea, si agrupas por cliente, tendras muchas compras DISTINTAS con el mismo cliente, por lo que mostrar por ejemplo la fecha de la compra es estupido, pues todas las compras del cliente 5 son en fechas distintas, no sabria que mostrar.

¿Que es lo que quieres hacer con esa consulta? Quizas encontremos un query que se adecue mas a tus necesidades.
__________________
Saludoss
Guille
  #7 (permalink)  
Antiguo 16/07/2008, 10:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: orden de una Sentencia en SQL

Perdona, no vi la imagen, y ahora observo que tienes una suma o cuenta (he puesto cuenta)

SELECT campo1, campo2, count(*) as cuenta FROM compras c INNER JOIN (SELECT idcliente, count(*) as cuenta FROM compras WHERE estado!=0 GROUP BY idcliente) T1 ON t1.idcliente = c.idcliente AND t1.cuenta= c.cuenta WHERE c.estado!=0 GROUP BY c.idcliente ORDER BY c.id DESC

He editado: a ver si esto funciona. No lo he probado

Última edición por jurena; 16/07/2008 a las 10:44
  #8 (permalink)  
Antiguo 16/07/2008, 10:46
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

Mira te muestro mas gráficamente

Así queda con tu sentencia

Código PHP:
SELECT FROM compras c INNER JOIN (SELECT idcliente FROM compras WHERE estado!=0 GROUP BY idclienteT1 ON t1.idcliente c.idcliente WHERE c.estado!=0 ORDER BY c.idclientec.id DESC 


pero necesito que me quede así agrupado
que lo hago con esta otra
Código PHP:
SELECT FROM compras WHERE estado!=0 GROUP BY idcliente 


Pero aparezca ordenado por di 72.70.60 Descendiente mente


PD por post #7: la suma la hago con una función que me cuenta cuantos productos por cliente con estado 1 estan en la tabla esto ya esta listo..

Gracias
  #9 (permalink)  
Antiguo 16/07/2008, 10:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: orden de una Sentencia en SQL

Qué te sale con esta:
SELECT campo1, campo2, count(*) as cuenta FROM compras c INNER JOIN (SELECT idcliente, count(*) as cuenta FROM compras WHERE estado!=0 GROUP BY idcliente) T1 ON t1.idcliente = c.idcliente AND t1.cuenta= c.cuenta WHERE c.estado!=0 GROUP BY c.idcliente ORDER BY c.id DESC

he puesto count(*), porque no sé cómo adaptar tu suma...
  #10 (permalink)  
Antiguo 16/07/2008, 10:56
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

Cita:
Iniciado por guille_el3 Ver Mensaje
Esa consulta con group by no tiene sentido. ¿Para que agrupas por cliente si muestras todos los datos?
O sea, si agrupas por cliente, tendras muchas compras DISTINTAS con el mismo cliente, por lo que mostrar por ejemplo la fecha de la compra es estupido, pues todas las compras del cliente 5 son en fechas distintas, no sabria que mostrar.

¿Que es lo que quieres hacer con esa consulta? Quizas encontremos un query que se adecue mas a tus necesidades.
No es que mas que todo lo que hace la consulta es agrupar las compras de un cliente para que no muestre registro por registro ya cuando le dan en ver detalles aparece mas información completa sobre el cliente y sus compras


  #11 (permalink)  
Antiguo 16/07/2008, 11:03
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: orden de una Sentencia en SQL

Sigo diciendolo, ¿Que es lo que quieres mostrar? Esa imagen no me vale porque no tiene sentido.

Quieres todas las compras con estado=0 agrupados por cliente, ok, ¿pero que datos de esas compras?¿La suma de los productos de cada compra?

¿Puedes ser más específico? Fijate que te hablo de "que" quieres mostrar, no me interesa agrupado, no agrupado, no te hablo en sql, ¡somos personas! =P

(perdon pero me saco)
__________________
Saludoss
Guille
  #12 (permalink)  
Antiguo 16/07/2008, 11:06
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

Cita:
Iniciado por jurena Ver Mensaje
Qué te sale con esta:
SELECT campo1, campo2, count(*) as cuenta FROM compras c INNER JOIN (SELECT idcliente, count(*) as cuenta FROM compras WHERE estado!=0 GROUP BY idcliente) T1 ON t1.idcliente = c.idcliente AND t1.cuenta= c.cuenta WHERE c.estado!=0 GROUP BY c.idcliente ORDER BY c.id DESC

he puesto count(*), porque no sé cómo adaptar tu suma...

No nos compliquemos la suma no la necesito para nada solo necesito esto...

asi tengo el query
Código PHP:
SELECT FROM compras WHERE estado!=0 GROUP BY idcliente 
y me muestra esto


pero necesito que me muestre asi



  #13 (permalink)  
Antiguo 16/07/2008, 11:07
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: orden de una Sentencia en SQL

pues ponle "order by 1 desc" y listo....
__________________
Saludoss
Guille
  #14 (permalink)  
Antiguo 16/07/2008, 11:10
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

Cita:
Iniciado por guille_el3 Ver Mensaje
pues ponle "order by 1 desc" y listo....
Pues eso es lo que digo en el primer post pero no funciona queda en el mismo orden 60.70.72 Y NO 72.70.60
  #15 (permalink)  
Antiguo 16/07/2008, 11:11
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: orden de una Sentencia en SQL

Yo digo "order by 1 (uno) desc", no "order by Id desc"

Igual creo que el problema esta en tu query... ¿No podrias postear tu query entero?
__________________
Saludoss
Guille
  #16 (permalink)  
Antiguo 16/07/2008, 11:13
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

Cita:
Iniciado por guille_el3 Ver Mensaje
Yo digo "order by 1 (uno) desc", no "order by Id desc"
ya me di cuenta del (uno)

Código PHP:
SELECT FROM compras WHERE estado!=0 GROUP BY idcliente ORDER BY 1 DESC 
Y queda en el mismo orden

  #17 (permalink)  
Antiguo 16/07/2008, 11:16
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 9 meses
Puntos: 45
Respuesta: orden de una Sentencia en SQL

¿Has probado la consulta directamente en al consola de mysql?
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #18 (permalink)  
Antiguo 16/07/2008, 11:25
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

Cita:
Iniciado por Genetix Ver Mensaje
¿Has probado la consulta directamente en al consola de mysql?
a este man era el que necesitaba... lo ensaye en la consola y si funciona bien voy a revisar el codigo donde me muestra ..Gracias
  #19 (permalink)  
Antiguo 16/07/2008, 11:31
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: orden de una Sentencia en SQL

Claro no era problema del sql si no de un .js mas especificamente de un script "Sortable Table" que yo utilizo.

var sortableTable = new Class({

getOptions: function(){
return {
overCls: false,
onClick: false,
sortOn: 0,
sortBy: 'ASC',
filterHide: true,
filterHideCls: 'hide',
filterSelectedCls: 'selected'
};
},

discúlpenme la próxima vez primero probare en la consola antes de preguntar

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 22:13.