Bonjour,
Je suis actuellement sur un projet en C++ pour lequel j'utilise une base de données MySQL. Je travaille sous Builder C++.
Pour integrer MySQL, j'ai utilisé ce tuto.
Tout marche correctement, enfin presque...(sinon, je ne serai pas là )
J'ai une table ainsi :
TablePrincipale{
id
PNom VARCHAR(50)
PTrigramme1 VARCHAR(5)
PTrigramme2 VARCHAR(5)
PTrigramme3 VARCHAR(5)
}
Je souhaite effectuer une recherche dans cette table à partir des trois trigrammes, mais sans tenir compte de l'ordre.
Si je cherche AAA, BBB, CCC, ca doit me sortir tous les enregistrements pour lesquels le trigramme1, 2 et 3 contiennent (non respectivement) AAA, BBB, CCC (chaque trigramme contient 3 lettres).
Donc le resultat d'une recherche pour AAA, BBB, CCC doit être identique au résultat d'une recherche pour BBB, CCC, AAA.
A moins que j'ai raté quelque chose, la requête a rédiger est assez complexe. J'ai donc recherché sur le net une solution alternative : créer une table temporaire. Voici donc ma requete :
Ce code s’exécute correctement sur MySQL WorkBench, il me retourne bien ce que j'attend. Mais lorsque je l’exécute dans mon programme en C++, mySQL me signale qu'il y a une erreur de syntaxe dans :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TEMPORARY TABLE table_temp( nom VARCHAR(50) trigramme2 VARCHAR(5) trigramme3 VARCHAR(5)); INSERT INTO table_temp SELECT PNom, PTrigramme2, PTrigramme3 FROM TablePrincipale WHERE PTrigramme1="AAA" OR PTrigramme1="BBB" OR PTrigramme1="CCC"; SELECT nom FROM table_temp WHERE (trigramme2="AAA" OR trigramme2="BBB" OR trigramme2="CCC") AND (trigramme3="AAA" OR trigramme3="BBB" OR trigramme3="CCC") DROP TABLE table_temp;
J'ai essayé de faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO table_temp SELECT PNom, PTrigramme2, PTrigramme3 FROM TablePrincipale WHERE PTrigramme1="AAA" OR PTrigramme1="BBB" OR PTrigramme1="CCC";
sans plus de succès.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO table_temp(nom, trigramme2, trigramme3) SELECT PNom, PTrigramme2, PTrigramme3 FROM TablePrincipale WHERE PTrigramme1="AAA" OR PTrigramme1="BBB" OR PTrigramme1="CCC";
Et même :
ne marche pas mieux. J'ai toujours une erreur de syntaxe ALORS QUE LA MÊME REQUÊTE FONCTIONNE SUR WORKBENCH ! Je ne sais pas si le soucis vient de MySQL ou pas, mais je suis dans une impasse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO table_temp SELECT PNom, PTrigramme2, PTrigramme3 FROM TablePrincipale;
Si vous aviez des idées à me proposer, je suis preneur !
Je vous remercie par avance
Partager