RECHERCHES CUMULATIVES OU EXCLUSIVES MULTICRITÈRES IN SQL DATABASE

Signaler
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010
-
Messages postés
26
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
27 septembre 2014
-
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

Messages postés
26
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
27 septembre 2014

??! 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.
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010

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 & ")"


?
Messages postés
26
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
27 septembre 2014

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.
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010

oops - j'ai mis les guillements de l'autre côté du % ...... mais bon, ce n'est qu'un exemple de programmation hé
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010

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 ??