Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/06/2007, 16h19   #1
Invité de passage
 
Inscription : juin 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 6
Points : 1
Points : 1
Par défaut Instr ACCESS --> MYSQL

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 :
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 :
1
2
3
4
5
6
CREATE TABLE Agence
(Col1 id_agence PRIMARY KEY,
 Col2 agence,
 Col3 ville,
 Col4 reseau
)
Code :
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 :
1
2
3
4
5
CREATE TABLE SERVEUR
(Col1 id_agence PRIMARY KEY,
 Col2 SER_NETBIOS
 Col3 SER_IP
)
Code :
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 :
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 :
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.

Citation:
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
Grelot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 14h04   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
Bonjour,

La fonction INSTR() existe pourtant bien dans MySQL.
Autres fonctions synonymes : LOCATE ou POSITION.
Un petit tour dans la documentation de MySQL montre ceci comme syntaxe pour POSITION :
Citation:
POSITION(substr IN str) est un synonyme de LOCATE(substr,str)
Ces fonctions te renvoient la position d'une chaîne de caractères (substr) dans une autre chaîne de caractères (str), qui peut être un champ.
La syntaxe que tu utilises est trop proche de celle de Access, et il faut respecter celle de MySQL pour ne pas avoir d'erreur.

Maintenant, je ne suis pas sûr que cette fonction corresponde exactement à ce que tu souhaites. Mais que faut-il comprendre par "IP de 3 octets" ? Les 3 derniers chiffres de l'adresse IP ?

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h19.


 
 
 
 
Partenaires

Hébergement Web