honnetement, je sais que comme je l'ai codé ca marche, mais je ne comprends pas tout ce que j'écris ...
et notamment le * je ne sais pas à quoi il sert
donc si tu pouvais m'éclaircir sur ce pt
apres, l'interet 2 dont tu parles, c'est uniquement valable si c'est une appli en réseau local ou internet non ?
car moi c'est une requete uniquement sur une BDD sur le pc
enfin, je sais pas si le * jouera un role ou pas, mais je souhaiterai par la suite complexifier la requete, et non plus faire une requete sur une seule rubrique mais sur plusieurs
par exemple, il faut que à la fois la rubrique 1 soit égale à telle lettre, et la rubrique 2 à telle autre lettre
je ne sais pas si dans ce cas, le * a tout son sens ou pas ...
Le * de SELECT * signifie qu'on sélectionne toutes les rubriques présentes.
Je pense que tu devrais faire un tour dans des cours SQL...
Et tu peux utiliser les nomrubrique1 AS A, nomrubrique2 AS B, etc... pour attribuer à des lettres.
donc dans mon cas, si je souhaite au final faire une recherche sur plusieurs rubriques, il faut que je garde SELECT * non ?
comment je dois faire pour le code alors pour faire une recherche sur plusieurs rubriques ?
enfin , pour les cours SQL, bah je n'en n'ai malheureusement pas, j'apprends par moi meme à utiliser WD : c'est un hobby, et je ne travaille pas du tout dans ce secteur ^^
Tout à fait c'est pour ça qu'il vaut mieux abandonner le * et preciser les noms de champs un par un en plyus ça rendra ton code plus lisible.
Et bien, sûr si tu ne te sers pas du réseau tu ne pourras pas faire d'economie de bande passante...
ok, mais faudrait (encore) m'aider
déjà, comment faudrait il coder sans le * ?
et ensuite , comment fait on pour faire une recherche multicriteres ?
actuellement j'ai par exemple ce code :
pour sélectionner dans mon dictionnaire les mots dont la 1ere lettre (Rubrique1 = Lettre1) est "A"
Code : Sélectionner tout - Visualiser dans une fenêtre à part HExécuteRequêteSQL(Req_dictionnaire_test,"SELECT * FROM dictionnaire_test WHERE dictionnaire_test.Lettre1='A')
et maintenant si j'enleve les "*" et que je veux faire une requete dans la BDD dictionnaire_test pour y trouver les mots dont la 1ere lettre (Rubrique1 = Lettre1) est "A" et 2eme lettre (Rubrique2 = Lettre2) est "S" : on code quoi ?
merci
Salut,
A la place de * tu met le nom de la rubrique qui apparaitra en résultat.
Si par exemple tu as 5 rubriques nommées : Lettre1, Lettre2, Lettre3, Lettre4 et Lettre5 et que ce qui t'intéresse c'est d'avoir Lettre1, Lettre2 et Lettre3 uniquement alors t'as clause SELECT sera :
A la place de *
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT Lettre1, Lettre2, Lettre3 FROM ...
Pour une recherche multicritères tu utilisera un opérateur logique AND, OR, etc.
dans ton exemple ça sera
Ou bien avec l'opérateur OR selon se que tu veux obtenir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 chaineSQL est une chaine chaineSQL = "SELECT dictionnaire_test.Lettre1, dictionnaire_test.Lettre2 FROM dictionnaire_test WHERE dictionnaire_test.Lettre1='A' AND dictionnaire_test.Lettre2='S'" HExécuteRequêteSQL(Req_dictionnaire_test,chaineSQL)
Pour simplifier la lecture tu peux aussi utiliser des alias.
N'oublie pas les contrôles d'erreur pour savoir si la requête s'exécute correctement.
A+
Ou mieux encore tu fais la requete sous l'editeur de requête... Cela te permettra de la construire plus facilement.
De plus il faut savoir que si tu teste A et B et que tu passe null en paramètre a B, il te fera la sélection que sur les A.
ok merci basam, j'ai tout compris et mis en application
par contre, je me demande si j'ai effectivement intérêt ou pas à enlever le *
car en fait, j'en ai besoin pour faire d'autres requetes par la suite (apres qq traitements dans mon application)
car apres avoir fait la requete sur les 2 premieres lettre de la BDD HF, il faut que je passe à des requetes sur les 3 premieres lettres
donc ce que j'avais fait déjà (mais avec des fichiers txt comme BDD) c'est que j'avais effectué la requete sur la 3eme lettre, uniquement sur les résultats positifs de la premiere requete (cad sur les mots commencant bien par les 2 bonnes premieres lettres)
d'où ma question :
est ce que si je travaille avec des BDD HF qui a priori sont bcp plus rapides à traiter que des .txt, j'ai interet à faire ma seconde requete sur les résultats de la premiere, ou sur toute la BDD HF intiale ....
autre question
je suis passé à la requete non plus sur un chiffre , mais sur une lettre :s
et j'ai un pb :
si je code
ca marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part HExécuteRequêteSQL(Req_dictionnaire,"SELECT * FROM dictionnaire WHERE dictionnaire.Rubrique2='a'")
par contre, si je mets
où lettre_à_tester est définie comme variable locale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part HExécuteRequêteSQL(Req_dictionnaire,"SELECT * FROM dictionnaire WHERE dictionnaire.Rubrique2="+lettre_à_tester)
ca ne marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part lettre_à_tester est un caractère = "a"
ni même dans le cas où :
avec saisie_lettre_à_tester un champs de type = texte / masque de saisie = Lettres / Taille de saisie = 1 caractère
Code : Sélectionner tout - Visualiser dans une fenêtre à part HExécuteRequêteSQL(Req_dictionnaire,"SELECT * FROM dictionnaire WHERE dictionnaire.Rubrique2="+saisie_lettre_à_tester)
arf, j'ai trouvé, faut ajouter des ' entre le champs pour avoir :
reste encore ma question en fin de page 2 qui est plus d'ordre général que ce que je viens de résoudre
Code : Sélectionner tout - Visualiser dans une fenêtre à part HExécuteRequêteSQL(Req_dictionnaire,"SELECT * FROM dictionnaire WHERE dictionnaire.Rubrique2='"+lettre_à_tester+"'")
Salut,
Tu peux utiliser le résultat de la requête comme paramètre pour la deuxième, tu peux aussi traiter le résultat de la requête par du code WLangage, tout dépend de ce que tu veux faire.
A+
Salut Basam
"comme paramètre pour la deuxieme" cad comme nouvelle BDD sur laquelle faire la requete ?
effectivement, je pense que ce serait mieux
car j'ai réussi à faire ce que je voulais, mais je ne constate aucun gain de temps par rapport à avant (où je faisais une recherche dans un fichier txt)
et en éliminant des lignes de code, je me rends compte que la requete SQL en elle meme est très rapide (requete SQL sur dictionnaire, et résultats de la requete dans Req_dictionnaire)
mais ensuite, ce qui prend du temps, c'est que je transfere toutes les rubriques du résultat de la requete Req_dictionnaire vers une autre BDD HF (un .fic) que j'ai appelé dictionnaire_affiné, pour ensuite faire une nouvelle requete SQL sur dictionnaire_affiné
et c'est ce transfert qui prend bcp de temps en fait :s
j'ai l'impression de pas faire convenablement :s
arf oui lol
ca marche effectivement :
ce que je faisais de copier les résultats dans une autre BDD ne sert à rien :s
je peux directement faire une seconde requete sur le résutlat de la premiere
cool merci
par contre, est ce que ca vaut le coup de faire la 2nde requete sur les résultats de la premiere ?
dans mon idée, ca permet de réduire la BDD sur laquelle la 2nde requete est faite : on passe par exemple de 10 000 mots à screener dans la BDD initiale à 1 000 mots comme résultat de la premiere requete
donc la seconde requete se fera sur les 1000 mots et ainsi de suite (puisque je vais faire jusqu'à 10 requetes successives pour les 10 lettres par exemple)
mais est ce que ca vaut le coup de réduire ainsi la BDD hyperfile ? ou le systeme hyperfile est si performant que cane va rien changer ?
Salut,
Tu peux faire dix requêtes mais si elles font toutes la même chose, une seule requête devrai suffire avec une boucle ou même des instructions WLangage, ce qui serait plus simple à mettre en œuvre compte tenu du fit qu'il existe de nombreuses instructions pour la gestion des chaines de caractères.
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager