Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/05/2010, 08:46
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Consulta union de tres tablas y ordenar

Solo tu entiendes tu ejemplo. A lo que me refiero, es a que este orden si se puede dar por la posición de la columna.

Por ejemplo... tengo esta tabla en orden por defecto por id.

Código MySQL:
Ver original
  1. mysql> select id,codigo,modelo from productos;
  2. +----+----------+----------------------------------+
  3. | id | codigo   | modelo                           |
  4. +----+----------+----------------------------------+
  5. |  1 | AIPCIN   | PCI AIR LINK N                   |
  6. |  2 | DIR-615  | ROUTER D-LINK DIR-615            |
  7. |  3 | DWA-130N | ADAPTADOR USB D-LINK DWA-130 N   |
  8. |  4 | WBR-1310 | ROUTER D-LINK DIR-WBR-1310 / 300 |
  9. |  5 | NUVI350N | GARMIN NUVI 350 N                |
  10. |  6 | NUVI260  | GARMIN NUVI 260                  |
  11. |  7 | BEFSR41  | BEFSR41 ROUTER DSL LINKSYS CISCO |
  12. |  8 | WRT300N  | ROUTER LINKSYS WRT300N           |
  13. |  9 | WRT310N  | ROUTER WRT310N                   |
  14. | 10 | WRT150N  | ROUTER LINKSYS WRT150N           |
  15. | 11 | WRT160N  | ROUTER LINKSYS WRT160N           |
  16. | 12 | WRT54G2  | ROUTER LINKSYS WRT54G2           |
  17. | 13 | WUSB300N | ADAPTADOR LINKSYS WUSB300N       |
  18. | 14 | PCMCIAG  | PCMCIA LINKSYS G                 |
  19. +----+----------+----------------------------------+
  20. 14 rows in set (0.00 sec)

Si yo hago UNION con la misma tabla con los registros del 5 al 10, despues del 1 al 4 y por ultimo del 11 al 14 me aparece bien.

Código MySQL:
Ver original
  1. mysql> select id,codigo,modelo from productos where id between 5 and 10
  2.     -> union
  3.     -> select id,codigo,modelo from productos where id between 1 and 4
  4.     -> union
  5.     -> select id,codigo,modelo from productos where id between 11 and 14;
  6. +----+----------+----------------------------------+
  7. | id | codigo   | modelo                           |
  8. +----+----------+----------------------------------+
  9. |  5 | NUVI350N | GARMIN NUVI 350 N                |
  10. |  6 | NUVI260  | GARMIN NUVI 260                  |
  11. |  7 | BEFSR41  | BEFSR41 ROUTER DSL LINKSYS CISCO |
  12. |  8 | WRT300N  | ROUTER LINKSYS WRT300N           |
  13. |  9 | WRT310N  | ROUTER WRT310N                   |
  14. | 10 | WRT150N  | ROUTER LINKSYS WRT150N           |
  15. |  1 | AIPCIN   | PCI AIR LINK N                   |
  16. |  2 | DIR-615  | ROUTER D-LINK DIR-615            |
  17. |  3 | DWA-130N | ADAPTADOR USB D-LINK DWA-130 N   |
  18. |  4 | WBR-1310 | ROUTER D-LINK DIR-WBR-1310 / 300 |
  19. | 11 | WRT160N  | ROUTER LINKSYS WRT160N           |
  20. | 12 | WRT54G2  | ROUTER LINKSYS WRT54G2           |
  21. | 13 | WUSB300N | ADAPTADOR LINKSYS WUSB300N       |
  22. | 14 | PCMCIAG  | PCMCIA LINKSYS G                 |
  23. +----+----------+----------------------------------+
  24. 14 rows in set (0.00 sec)

Pero si a esta consulta le aplico un order by descendente por el primer campo (id en este caso) me lo hace bien.

Código MySQL:
Ver original
  1. mysql> select id,codigo,modelo from productos where id between 5 and 10
  2.     -> union
  3.     -> select id,codigo,modelo from productos where id between 1 and 4
  4.     -> union
  5.     -> select id,codigo,modelo from productos where id between 11 and 14
  6.     -> ORDER BY 1 DESC;
  7. +----+----------+----------------------------------+
  8. | id | codigo   | modelo                           |
  9. +----+----------+----------------------------------+
  10. | 14 | PCMCIAG  | PCMCIA LINKSYS G                 |
  11. | 13 | WUSB300N | ADAPTADOR LINKSYS WUSB300N       |
  12. | 12 | WRT54G2  | ROUTER LINKSYS WRT54G2           |
  13. | 11 | WRT160N  | ROUTER LINKSYS WRT160N           |
  14. | 10 | WRT150N  | ROUTER LINKSYS WRT150N           |
  15. |  9 | WRT310N  | ROUTER WRT310N                   |
  16. |  8 | WRT300N  | ROUTER LINKSYS WRT300N           |
  17. |  7 | BEFSR41  | BEFSR41 ROUTER DSL LINKSYS CISCO |
  18. |  6 | NUVI260  | GARMIN NUVI 260                  |
  19. |  5 | NUVI350N | GARMIN NUVI 350 N                |
  20. |  4 | WBR-1310 | ROUTER D-LINK DIR-WBR-1310 / 300 |
  21. |  3 | DWA-130N | ADAPTADOR USB D-LINK DWA-130 N   |
  22. |  2 | DIR-615  | ROUTER D-LINK DIR-615            |
  23. |  1 | AIPCIN   | PCI AIR LINK N                   |
  24. +----+----------+----------------------------------+
  25. 14 rows in set (0.00 sec)

analiza el ejemplo y acomodalo a tus necesidades.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming