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