pas de solution miracle, si tu veux faire simplement :
-> une méga requête qui fait toutes les jointures imaginables entre toutes tes tables
-> elle prend en paramètre tous les critères possibles
-> à chaque fois tes critères sont de la forme :
Code :
- where (table.champ = :critere or :critere is null)
|
-> tu initialises tous tes critères avec les valeures choisies, ou "null" quand ils en sont pas remplis
il reste aussi la solution de créer dynamiquement la requête, mais par expérience, c'est plus chiant à faire, et surtout, niveau perfs ça n'apporte pour ainsi dire rien, donc autant ne pas s'emmerder...