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 :
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; |
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 :
1 2
| INSERT INTO table_temp SELECT PNom, PTrigramme2, PTrigramme3 FROM TablePrincipale
WHERE PTrigramme1="AAA" OR PTrigramme1="BBB" OR PTrigramme1="CCC"; |
J'ai essayé de faire ceci :
1 2
| INSERT INTO table_temp(nom, trigramme2, trigramme3) SELECT PNom, PTrigramme2, PTrigramme3 FROM TablePrincipale
WHERE PTrigramme1="AAA" OR PTrigramme1="BBB" OR PTrigramme1="CCC"; |
sans plus de succès.
Et même :
INSERT INTO table_temp SELECT PNom, PTrigramme2, PTrigramme3 FROM TablePrincipale;
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.
Si vous aviez des idées à me proposer, je suis preneur !
Je vous remercie par avance
Partager