Jeśli kolumny obu tabel są takie same, możesz użyć 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`
EDYTUJ
Przeczytaj odpowiednią sekcję podręcznika MySQL w sprawie ZWIĄZKÓW. Są inne sposoby wyrażenia tego, ale jest to mój preferowany styl — każdy, kto czyta, powinno być jasne, że klauzula ORDER BY dotyczy wyniku obu stron UNII. Niedbale napisany UNION - nawet z ORDER BY - może nadal pozostawić ostateczny zestaw wyników w nieokreślonej kolejności.
Celem PTYPE jest to, że to zapytanie zwraca dodatkową kolumnę o nazwie PTYPE, która wskazuje, czy każdy pojedynczy wiersz jest FAKTURĄ czy PŁATNOŚCIĄ... tj. z którego z dwóch tabel pochodzi. Nie jest to obowiązkowe, ale często może być przydatne w związku