Tu trouveras toujours des solutions batardes pour le faire, surtout en MySQL.
Mais ne cherche pas, c'est pas au SGBD de s'occuper de ça (cf. ma signature)
Le résultat que tu reçois actuellement est le résultat que tu dois récupérer.
Si vraiment tu as toujours la même liste de critères, en faisant une jointure sur la table critère par critère possible, tu pourras ramener autant de colonnes que de critères, sans pour autant faire du SQL non standard. Ceci dit, cela va multiplier les lectures dans la base, ce qui n'est pas une bonne idée en ce qui concerne les performances... D'autant que la table qui liste les valeurs des critères est certainement la plus grosse de ta base, donc c'est ridicule d'y accéder plusieurs fois pour chaque ligne de ta requête.