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 :

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;
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
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 :
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";
sans plus de succès.
Et même :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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