C'est dégeux de faire autant de requete SQL pour ça... Tu peux tout mettre dans la même à mon avis, ou bien tu arrives à gérer l'order avec un bon ORDER BY et tu LIMIT 0,1 pour n'en prendre qu'un. Ou bien tu recuperes tout les messages et tu fais le tri en php.
Mais c'est contre performant cette histoire de faire 4 requetes. En plus dans la majorité des cas il faudra faire 4 requetes pour trouver le bon message...

Vu qu'en plus c'est appelé à chaque vente on ne peut ce permettre se trou de performance, ça va ralentir les transactions.
Perso je vote contre cette implementation, c'est pas bon pour la prod.