Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/02/2014, 04:53
srpiramo
Invitado
 
Mensajes: n/a
Puntos:
Ordenar la unión total de dos tablas y diferentes campos

Muy buenas a todos, aunque me habéis resuelto muchas dudas sin vosotros saberlo, esta vez no he podido dar con la solución.

Tengo dos tablas:

Código MySQL:
Ver original
  1. tabla1                          tabla2
  2. -------------------------       -------------------------------------------------------
  3. | uno_id | uno_nombre   |       | dos_id | dos_nombre   | dos_empresa  | dos_cargo    |
  4. -------------------------       -------------------------------------------------------
  5. |      1 | Marcial      |       |      1 | Marcial      | Mercado      | Gerente      |
  6. |      3 | Alfredo      |       |      2 | Carlos       | Zapatería    | Peón         |
  7. -------------------------       -------------------------------------------------------

Las he unido por completo, como mysql no acepta FULL OUTER JOIN las he unido así:

Código MySQL:
Ver original
  1.    tabla1.uno_id,
  2.    tabla1.uno_nombre,
  3.    tabla2.dos_id,
  4.    tabla2.dos_nombre,
  5.    tabla2.dos_empresa,
  6.    tabla2.dos_cargo
  7. FROM tabla1
  8.    LEFT JOIN tabla2
  9.    ON tabla1.uno_id = tabla2.dos_id)
  10. (SELECT   tabla1.uno_id,
  11.    tabla1.uno_nombre,
  12.    tabla2.dos_id,
  13.    tabla2.dos_nombre,
  14.    tabla2.dos_empresa,
  15.    tabla2.dos_cargo
  16. FROM tabla1
  17.    RIGHT JOIN tabla2
  18.    ON tabla1.uno_id = tabla2.dos_id)

El resultado es el siguiente:
Código MySQL:
Ver original
  1. --------------------------------------------------------------------------------
  2. | uno_id | uno_nombre   | dos_id | dos_nombre   | dos_empresa  | dos_cargo    |
  3. -------------------------------------------------------------------------------
  4. |      1 | Marcial      |      1 | Marcial      | Mercado      | Gerente      |
  5. |      3 | Alfredo      |   NULL |         NULL |         NULL |         NULL |
  6. |   NULL |         NULL |      2 | Carlos       | Zapatería    | Peón         |
  7. -------------------------------------------------------------------------------

El problema viene porque la tabla1 no la puede modificar el usuario de la aplicación, y la tabla2 complementa, por así decirlo, a la tabla1. De esta manera manera el usuario puede encontrar las diferencias entre ambas tablas y modificar la tabla2 si quiere.

Funciona bien, pero me gustaría ordenarlo con una mezcla de uno_id y dos_id para que quedara así:

Código MySQL:
Ver original
  1. --------------------------------------------------------------------------------
  2. | uno_id | uno_nombre   | dos_id | dos_nombre   | dos_empresa  | dos_cargo    |
  3. -------------------------------------------------------------------------------
  4. |      1 | Marcial      |      1 | Marcial      | Mercado      | Gerente      |
  5. |   NULL |         NULL |      2 | Carlos       | Zapatería    | Peón         |
  6. |      3 | Alfredo      |   NULL |         NULL |         NULL |         NULL |
  7. -------------------------------------------------------------------------------

Y es que no sé ni siquiera cómo empezar a hacer ese ORDER BY, estoy en blanco.
Desde ya muchas gracias