Estou com um problema em uma Query e gostaria de uma luz, tenho uma classe de produtos e nesse produto tenho duas clausulas booleanas que são promoção e pronta entrega, e estou quebrando a cabeça para montar o select, pois o produto pode ser pronta entrega OU promoção, ou pronta entrega E promoção, ou nenhum dos dois, apenas o produto pela categoria dele. Tentei algumas query com IS NULL, mas ou ele retorna todos os registros ou nenhum.
Se alguém já passou por isso, ficaria grato por uma mãozinha.
$pdo = $this->con->conecta();
$buscaProduto = $pdo->prepare("SELECT p.id, p.nome FROM produtos AS p WHERE categorias_id = :categorias_id AND promocao = :promocao AND prontaentrega = :prontaentrega;");
$buscaProduto->bindValue(":categorias_id", $this->categorias_id, PDO::PARAM_INT);
$buscaProduto->bindValue(":promocao", $this->promocao);
$buscaProduto->bindValue(":prontaentrega", $this->prontaentrega);
$buscaProduto->execute();
$resultado = $buscaProduto->fetchAll(PDO::FETCH_ASSOC);
O problema é que eu precisaria que quando não fosse passado os parâmetros promoção e pronta entrega, ele chamasse todos os produtos, tanto promoção quanto pronta entrega, e assim cada vez que eu preenchesse os parâmetro ele me trouxesse o que preciso, como se fosse uma query “genérica”. Não sei se consegui ser claro.