Ако колоните и на двете таблици са еднакви, можете да използвате 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`
РЕДАКТИРАНЕ
Прочетете съответния раздел от ръководството за MySQL на СЪЮЗИТЕ. Има и други начини за формулиране на това, но това е моят предпочитан стил - трябва да е ясно за всеки, който чете, че клаузата ORDER BY се прилага за резултата от и двете страни на СЪЮЗА. Небрежно написан UNION - дори с ORDER BY - все пак може да остави крайния набор от резултати в неопределен ред.
Целта на PTYPE е тази заявка да връща допълнителна колона, наречена PTYPE, която показва дали всеки отделен ред е ФАКТУРА или ПЛАЩАНЕ... т.е. от коя от двете таблици идва. Това не е задължително, но често може да бъде полезно в рамките на съюз