2012-10-26 3 views
0

Avoir cette clause where:Mysql: solution de contournement pour if() retournant> 1 ligne

Le premier et le deuxième espace réservé? peut avoir des valeurs: 1 || NULL
Le troisième porte endroit est ajouté dynamiquement (tableau)

IF(ISNULL(?),1,xy.id) IN 
    (IF(ISNULL(?),1,(SELECT x.id FROM x WHERE name IN (?)))) 

Je besoin de ce type de vérification isnull parce que je veux la clause pour revenir toujours vrai si les données envoyées sont nulles. Fondamentalement, si les données sont une clause nulle sera 1 IN 1, si ce n'est pas null trouver les identifiants corespondent, mais la fonction if() me limite à renvoyer seulement 1 résultat (pas un ensemble) .Quelles options ai-je ici sauf construire dynamiquement toute la requête en php?

Répondre

1

Vous pouvez le faire dans votre where clause

WHERE (ISNULL(?) OR xy.id IN (SELECT x.id FROM x WHERE name IN (?))) 
Questions connexes