Quand mettre une clause where?

Contenu du snippet

Il peut arriver qu'on laisse l'utilisateur choisir le ou les champs sur lesquels il veut faire une recherche (ou même aucun champ!!!). Voici un petit bout de code afin de déterminer si vous avez besoin de mettre la clause WHERE ou la clause AND. Supposez que la page ASP reçoit 3 champs par la méthode GET.

Source / Exemple :


Dim strSQL                'la requète SQL
Dim blnWhereAdded   'True (1) si on a déjà ajouté la clause WHERE
Dim strField1              'la valeur du 1er champ... De type string
Dim intField2              'la valeur du 2ième champ... De type integer
Dim strField3              'la valeur du 3ième champ... De type string

'
' Définissez votre connexion et initialisez les trois variables strFieldx
'
blnWhereAdded = False
strSql = "SELECT * FROM Ma_Table"

If strField1 <> "" Then
  If Not blnWhereAdded Then
    strSQL = strSQL & " WHERE "
    blnWhereAdded = True
  Else
    strSQL = strSQL & " AND "
  End If
  strSQL = strSQL & "Champ1 LIKE '%" & strField1 &"%'"
End If

If intField2 <> "" Then
  If Not blnWhereAdded Then
    strSQL = strSQL & " WHERE "
    blnWhereAdded = True
  Else
    strSQL = strSQL & " AND "
  End If
  strSQL = strSQL & "Champ2 = " & intField2
End If  

If strField3 <> "" Then
  If Not blnWhereAdded Then
    strSQL = strSQL & " WHERE "
    blnWhereAdded = True
  Else
    strSQL = strSQL & " AND "
  End If
  strSQL = strSQL & "Champ3 LIKE '%" & strField3 &"%'"
End If

'
'Exécutez la requête strSQL puis affichez les résultats
'

Conclusion :


Avec ce code, si l'utilisateur fait une recherche sur aucun champ, la variable strSQL aura la valeur suivante: "SELECT * FROM Ma_Table"

Si l'utilisateur fait une recherche sur le 1er et 2ième champ:
"SELECT * FROM Ma_Table WHERE Champ1 LIKE '%Valeur_Entrée%' AND Champ2 = Valeur_Entrée"

Si l'utilisateur fait une recherche uniquement sur le 3ième champ:
"SELECT * FROM Ma_Table WHERE Champ3 LIKE '%Valeur_Entrée%'"

Amusez-vous à trouver les autres combinaisons si vous n'avez toujours pas compris!!!

Vous pouvez faire le même procédé si vous demandez à l'utilisateur dans quelle ordre il veut afficher les résultats.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.