par
sadeq » 11 févr. 2009, 22:53
Voici une analyse des conditions posées comme règles de fonctionnement de la requête.
On commence par donner des noms de code pour les expressions logiques:
Soit A : champ1 LIKE "test"
Soit B : champ2 LIKE "vivelephp"
Soit C : champ3 LIKE "phpfrance"
Remarque: L'opérateur LIKE ici joue le même rôle que l'opérateur = puisque le caractère générique % n'est pas employé dans les chaines de valeurs.
Construisons maintenant les conditions:
- 1° condition : A et B et C
2° condition : si la 1° règle est fausse, A et B ou C = NON(A et B et C) et (A et B ou C)
3° condition : si la 2° règle est fausse, A ou B ou C = NON( NON(A et B et C) et (A et B ou C) ) et (A ou B ou C)
La condition finale doit donc combiner les 3 conditions par un OU.
Code : Tout sélectionner
SELECT * FROM table
WHERE ( A AND B AND C )
OR ( NON(A AND B AND C) AND (A AND B OR C) )
OR ( NON( NON(A AND B AND C) AND (A AND B OR C) ) AND (A OR B OR C) )
Reste à remplacer, A, B et C par leurs valeurs.
Voici une analyse des conditions posées comme règles de fonctionnement de la requête.
On commence par donner des noms de code pour les expressions logiques:
Soit A : champ1 LIKE "test"
Soit B : champ2 LIKE "vivelephp"
Soit C : champ3 LIKE "phpfrance"
[b]Remarque: [/b]L'opérateur LIKE ici joue le même rôle que l'opérateur = puisque le caractère générique % n'est pas employé dans les chaines de valeurs.
Construisons maintenant les conditions:
[list]1° condition : A et B et C
2° condition : si la 1° règle est fausse, A et B ou C = NON(A et B et C) et (A et B ou C)
3° condition : si la 2° règle est fausse, A ou B ou C = NON( NON(A et B et C) et (A et B ou C) ) et (A ou B ou C)
[/list]
La condition finale doit donc combiner les 3 conditions par un OU.
[code]SELECT * FROM table
WHERE ( A AND B AND C )
OR ( NON(A AND B AND C) AND (A AND B OR C) )
OR ( NON( NON(A AND B AND C) AND (A AND B OR C) ) AND (A OR B OR C) )[/code]
Reste à remplacer, A, B et C par leurs valeurs.