両方のテーブルの列が同じである場合は、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マニュアル の関連セクションをお読みください UNIONSで。これを表現する方法は他にもありますが、これは私の好みのスタイルです。ORDERBY句が両方の結果に適用されることを読んでいる人には明らかなはずです。 UNIONの側面。不注意に書かれたUNIONは、たとえORDER BYがあっても、最終的な結果セットを不確定な順序で残す可能性があります。
PTYPEの目的は、このクエリがPTYPEと呼ばれる追加の列を返すことです。これは、個々の行がINVOICEであるかPAYMENTであるかを示します。 2つのテーブルのどちらから来ているのか。これは必須ではありませんが、多くの場合、ユニオン内で役立つ場合があります