sql >> Base de Datos >  >> RDS >> Mysql

Unir dos tablas, luego Ordenar por fecha, PERO combinando ambas tablas

Si las columnas de ambas tablas son iguales, puede usar UNION

SELECT X.*
  FROM ( SELECT `id`,
                `userID`,
                 'INVOICE' AS PTYPE
                 `amount`,
                 `date`
            FROM `invoices`
           WHERE {$userID} = userID  
          UNION
          SELECT `id`,
                 `userID`,
                 'PAYMENT' AS PTYPE
                 `amount`,
                 `date`
            FROM `payments`
           WHERE {$userID} = userID  
        ) X
 ORDER BY X.`date`

EDITAR

Lea la sección correspondiente del manual de MySQL en UNIONES. Hay otras formas de expresar esto, pero este es mi estilo preferido:debe quedar claro para cualquiera que lea que la cláusula ORDER BY se aplica al resultado de ambos lados de la UNIÓN. Una UNION escrita descuidadamente, incluso con un ORDEN POR, aún puede dejar el conjunto de resultados final en un orden indeterminado.

El propósito de PTYPE es que esta consulta devuelve una columna adicional llamada PTYPE, que indica si cada fila individual es una FACTURA o un PAGO... es decir. de cuál de las dos tablas proviene. No es obligatorio, pero a menudo puede ser útil dentro de un sindicato