Si les colonnes des deux tables sont identiques, vous pouvez utiliser un 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`
MODIFIER
Lisez la section correspondante du Manuel MySQL sur les SYNDICATS. Il existe d'autres façons de formuler cela, mais c'est mon style préféré - il devrait être clair pour quiconque lit que la clause ORDER BY s'applique au résultat de both côtés de l'UNION. Un UNION écrit négligemment - même avec un ORDER BY - peut toujours laisser le résultat final dans un ordre indéterminé.
Le but du PTYPE est que cette requête renvoie une colonne supplémentaire appelée PTYPE, qui indique si chaque ligne individuelle est une FACTURE ou un PAIEMENT... c'est-à-dire. de laquelle des deux tables il provient. Ce n'est pas obligatoire, mais peut souvent être utile au sein d'un syndicat