RECHERCHES CUMULATIVES OU EXCLUSIVES MULTICRITÈRES IN SQL DATABASE

Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 - 30 sept. 2006 à 10:42
vbromanoff Messages postés 26 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 27 septembre 2014 - 3 oct. 2006 à 18:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39732-recherches-cumulatives-ou-exclusives-multicriteres-in-sql-database

vbromanoff Messages postés 26 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 27 septembre 2014
3 oct. 2006 à 18:12
??! Ah ! ! Serait-ce la solution à mon problème ?

En fait, je n'avais jamais entendu parlé du système de parenthèses dans le SQL... je connais quelques fonctions et la "grammaire" du langage en question mais je ne connais rien de sa ponctuation...
Si en effet les parenthèse fonctionnent comme tu le dis, je me lance directement. Là tout de suite je n'ai pas le temps (fac de philo et tout et tout, huhuhu), mais je me lance dans c't'enroule dès ce soir.
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 1
30 sept. 2006 à 14:32
alors, utilise de guillemets pour raffermir la sélection :

"SELECT ... WHERE (VHS OR DVD) AND (REALISATEUR LIKE '%Duschmell%' AND ACTEUR LIKE '%lui%'

donc mon code deviendra :

SQL="Select * From table Where ("
+selection VHS et/ou DVD
SQL=SQL & ") " & Operateur de melange type et critaire (AND ou OR) & " ("
+selection critères
SQL=SQL & ")"


?
vbromanoff Messages postés 26 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 27 septembre 2014
30 sept. 2006 à 12:37
Si c'est beaucoup plus simple. Mais ce qui est simple dans ton code c'est surtout la programmation elle-même : le tiens est 100 fois plus propre, mais il ne résoud pas du tout mon problème : par exemple dans le cas où je dois afficher tous les films qui sont soit sur VHS soit sur DVD mais qui ont tous le même réalisateur et un acteur commun, la requête SQL que tu proproses programmera ceci :
"SELECT ... WHERE VHS OR DVD AND REALISATEUR LIKE '%Duschmell%' AND ACTEUR LIKE '%lui%'

Ce qui ne recherche pas du tout ce que je veux : il suffit que le film soit sur VHS pour qu'il soit affiché, sans tenir compte des critères de réalisateur et d'acteur... tout le problème est là. Mais c'est vrai qu'au début moi aussi j'avais fait un petit code tout propret.
Merci pour ta participation, et n'hésite pas à m'aider encore... j'en ai bien besoin.
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 1
30 sept. 2006 à 10:46
oops - j'ai mis les guillements de l'autre côté du % ...... mais bon, ce n'est qu'un exemple de programmation hé
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 1
30 sept. 2006 à 10:42
Amai, vous vous compliquez la vie avec votre programmation.... Essayez plus tot de trouver un astuce pour façiliter la vie et que ce soit utilisable dans tous les cas :


Dim SQL as string
Dim OpSup as string
Dim OpCrit as string

SQL="Select * From table Where 1 "

if SupCumulée then OpSup=" AND " else OpSup=" OR "
if CritCumulée then OpsCrit=" AND " else OpCrit=" OR "

' ici intégrer les conditions de recherche, je montre que pour les critères:
for Teller=0 to nrcrit
if listbox(teller).text<>"" then
sql=sql & OpCrit & "Critère Like %""" & listbox(teller).text & "%"""
end if
next

Set RS=DB.openrecordset(SQL)

et voila tous les info's dans un recordset ....... pas bcp plus simple ça ??
Rejoignez-nous