IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Instr ACCESS --> MYSQL


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 6
    Points
    6
    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 : 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

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 019
    Points : 23 712
    Points
    23 712
    Par défaut
    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 :
    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
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'une base Access avec MySQL
    Par Wyatt dans le forum Administration
    Réponses: 2
    Dernier message: 07/01/2005, 19h20
  2. Migration Access 2000 =>MySQl ??
    Par mesion dans le forum Access
    Réponses: 8
    Dernier message: 17/12/2004, 12h54
  3. Convertir une requête Access en MySQL
    Par iomega dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/03/2004, 09h47
  4. [Access VS MySQL] Choix de ma Bdd
    Par Seb7 dans le forum Décisions SGBD
    Réponses: 12
    Dernier message: 25/04/2003, 11h38
  5. Export base Access vers MySql
    Par jjn1er dans le forum Outils
    Réponses: 7
    Dernier message: 10/03/2003, 23h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo