Bonjour à tous,

Je suis un débutant de Mysql (les tutos de ce site m’ont bien aidés ) et j’ai un problème pour retranscrire une partie de ma requête que j’avais réalisé avec Access vers Mysql.


Voici la requête en question (Sous Access) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT Mid(SERVEUR.SER_IP,1,InStr(8,[SER_IP],'.')-1) AS TEST, SERVEUR.SER_NETBIOS, SERVEUR.SER_IP, agence.agence, agence.id_agence
FROM SERVEUR, agence
WHERE (((Mid(SERVEUR.SER_IP,1,InStr(8,[SER_IP],'.')-1))=agence.reseau))
Exemples de mes tables :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE TABLE Agence
(Col1 id_agence PRIMARY KEY,
 Col2 agence,
 Col3 ville,
 Col4 reseau
)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
INSERT INTO Agence (COL1, COL2, COL3) 
VALUES (56, ‘NANTERRE SIEGE’, NANTERRE, 11.155.206)
INSERT INTO Agence (COL1, COL2, COL3) 
VALUES (75, ‘PARIS MAINTENANCE’, PARIS, 11.155.95)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE TABLE SERVEUR
(Col1 id_agence PRIMARY KEY,
 Col2 SER_NETBIOS
 Col3 SER_IP
)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
INSERT INTO IPAY (COL1, COL2, COL3) 
VALUES (56, ‘ REZNANTE01’, 11.155.206.13
INSERT INTO IPAY (COL1, COL2, COL3) 
VALUES (75, ‘REZPARIS01’, 11.155.95.03
Ce que j’obtiens :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
-- Le résultat attendu :
TEST     	reseau         	agence 		     SER_IP  	   id_agence
------  	----------  	-------		      ------      --------
11.155.206   	REZNANTE01    	NANTERRE SIEGE	   11.155.206.13     56
11.155.95    	REZPARIS01    PARIS MAINTENANCE  11.155.95.03	      75
...

Grâce a cette requête j’arrive à obtenir le Reseau de l’agence grâce a l’IP de 3 octets seulement.

Lorsque j’ai voulu passer cette requête sous MySQL, la fonction INSTR n’était pas la même.
Il fallait que je replace INSTR par POSITION.

J’ai donc testé ma nouvelle requête en local avec phpmyadmin 2.2.6 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT Mid(SERVEUR.SER_IP,1,POSITION(8, SER_IP, '.')-1) AS TEST, SERVEUR.SER_NETBIOS, SERVEUR.SER_IP, agence.agence, agence.id_agence
FROM SERVEUR, agence
WHERE (((Mid(SERVEUR.SER_IP,1,POSITION(8,[SER_IP],'.')-1))=agence.reseau))";
Voila le message d'erreur.

MySQL a répondu:
Something is wrong in your syntax près de ' SER_IP, '.')-1) AS TEST, SERVEUR.SER_NETBIOS, SERVEUR.SER_IP, a' à la ligne 1

J’en conclu que le problème viens de la fonction POSITION. J’ai beau tester différent type de combinaison ça ne marche toujours pas:/

J’espère que j’ai été assez clair ^^

Merci