List:Spanish« Previous MessageNext Message »
From:Matias Aguirre Date:January 27 2011 12:00am
Subject:[SOLVED] Re: Problema al ordenar una tabla
View as plain text  
On 01/26/2011 08:38 PM, Matias Aguirre wrote:
> On 01/26/2011 07:36 PM, "José C. Massón" wrote:
>> El 26/01/11 18:35, Matias Aguirre escribió:
>>> Hola a todos,
>>>
>>> Tengo un problema para ordenar una tabla especifica... no se si alguien
>>> me puede explicar por que MySQL ordena esta tabla de esta manera. El
>>> query es el siguiente:
>>>
>>> SELECT id, title, catid FROM jos_k2_items
>>> ORDER BY id ASC, catid ASC
>>>
>>> y lo que devuelve:
>>>
>>> id     title     catid
>>> 4     Breakfast     1
>>> 5     Brunch     5
>>> 6     Lunch     6
>>> 7     Snack     7
>>> 8     Dinner     8
>>> 9     Dessert     9
>>> 10     [Copy of] Dessert     9
>>> 11     [Copy of] Dinner     8
>>> 12     [Copy of] Snack     7
>>> 13     [Copy of] Lunch     6
>>> 14     [Copy of] Brunch     5
>>> 15     [Copy of] Breakfast     1
>>> 16     [Copy of] [Copy of] Breakfast     1
>>> 17     [Copy of] [Copy of] Brunch     5
>>> 18     [Copy of] [Copy of] Lunch     6
>>> 19     [Copy of] [Copy of] Snack     7
>>> 20     [Copy of] [Copy of] Dinner     8
>>> 21     [Copy of] [Copy of] Dessert     9
>>>
>>>
>>> Como ven, el orden de catid es distinto, va del 1 al 9 y despues del 9
>>> al 1 y asi... muy raro
>>> Lo que yo necesito es que vaya del 1 al 9, y empiece de nuevo del 1 
>>> al 9.
>> Según entiendo es el funcionamiento correcto.
>>
>> Cuando vos le decís en la query: "ORDER BY id ASC, catid ASC"
>>
>> Lo que le estás diciendo es algo así como: "Ordená
> ascendentemente por
>> el campo id, y luego, si los valores de id son iguales, ordenalos
>> ascendentemente por el camppo cantid"
>>
>> En tu caso todos los valores de id, son distintos.
>>
>>
>> Saludos
>
> Antes que nada, gracias por las respuestas.
>
> Entiendo lo que dicen... entonces como podria ordenarlo de la manera 
> que yo requiero? En realidad necesito que se ordene por fechas y 
> despues que se ordene por el orden de la categoria. Si yo pongo:
>
> /SELECT i.id, i.title, i.created, c.name as categoryname,c.id as 
> categoryid, c.alias as categoryalias
> FROM jos_k2_items as i
> LEFT JOIN jos_k2_categories AS c ON c.id = i.catid
> WHERE i.published = 1
> AND i.access <= 0
> AND i.trash = 0
> AND c.published = 1
> AND c.access <= 0 AND c.trash = 0 AND ( i.publish_up = '0000-00-00 
> 00:00:00' OR i.publish_up <= '2011-01-26 19:15:44' ) AND ( 
> i.publish_down = '0000-00-00 00:00:00' OR i.publish_down >= 
> '2011-01-26 19:15:44' ) AND i.catid IN (1,6,8) AND i.featured != 1
> ORDER BY i.created DESC, i.catid ASC/
>
> Me devuelve:
>
> id     title     created     categoryname     categoryid     
> categoryalias
> 8     Dinner     2010-12-13 21:40:03     Dinner     8     dinner
> 6     Lunch     2010-12-13 21:38:37     Lunch     6     lunch
> 4     Breakfast     2010-12-13 21:21:00     Breakfast     1     breakfast
> 16     [Copy of] [Copy of] Breakfast     2010-11-16 19:41:12     
> Breakfast     1 breakfast
> 18     [Copy of] [Copy of] Lunch     2010-11-16 19:41:12     Lunch     
> 6     lunch
> 20     [Copy of] [Copy of] Dinner     2010-11-16 19:41:12     
> Dinner     8     dinner
> 15     [Copy of] Breakfast     2010-08-12 21:49:00     Breakfast     
> 1     breakfast
> 13     [Copy of] Lunch     2010-08-12 21:49:00     Lunch     6     lunch
> 11     [Copy of] Dinner     2010-08-12 21:49:00     Dinner     8     
> dinner
>
>
>
> Yo necesito tener ordenado por fecha descendente y las categorias 
> ascendentes (1,6 y respectivamente) y fijense que en los primeros 3 no 
> aparece en ese orden...
>
>
> Saludos
>

SELECT i.id, i.title, DAYOFYEAR(i.created) AS rdate, i.created, c.name 
as categoryname,c.id as categoryid, c.alias as categoryalias
FROM jos_k2_items as i
LEFT JOIN jos_k2_categories AS c ON c.id = i.catid
WHERE i.published = 1
AND i.access <= 0
AND i.trash = 0
AND c.published = 1
AND c.access <= 0
AND i.catid IN (1,6,8) AND i.featured != 1
ORDER BY rdate DESC, i.catid ASC

Aca les dejo la solucion temporal obtener el dia del a#o y ordenarlo por 
el mismo asi las horas no distorcionan el orden de la fecha.

Gracias a todos y saludos





Thread
Problema al ordenar una tablaMatias Aguirre26 Jan
  • Re: Problema al ordenar una tablaCarlos Proal26 Jan
  • Re: Problema al ordenar una tablaJosé C. Massón26 Jan
    • Re: Problema al ordenar una tablaMatias Aguirre27 Jan
      • [SOLVED] Re: Problema al ordenar una tablaMatias Aguirre27 Jan
        • Re: [SOLVED] Re: Problema al ordenar una tablaCarlos Barboni27 Jan