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

Shell et commandes GNU Discussion :

[MySQL]Afficher le retour d'un résultat d'une requête


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    Points : 65
    Points
    65
    Par défaut [MySQL]Afficher le retour d'un résultat d'une requête
    Bonsoir à tous,

    J'ai le script suivant qui compare les différences entre deux tables MySQL. J'aimerais juste récupérer les valeurs qui sont en doublons dans mon mail.

    Quels serait la meilleur facon de faire ?

    le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #/usr/bin/bash
     
    DB_HOST='X.X.X.X'
    DB_USER='XXXXXXt'
    DB_PASS='XXXXX'
    DB='test'
     
    mysql -u "$DB_USER" \
          --host="$DB_HOST" \
          --password="$DB_PASS" \
          --database="$DB" \
          --enable-local-infile \
            --execute='LOAD DATA LOCAL INFILE "/home/admin/fichierA"
                     INTO TABLE fichierdat
                     FIELDS ENCLOSED BY " "
                     LINES TERMINATED BY "\n";'
     
    req1=$"select adresse_mac, adresse_ip, nom_hôte from fichierdat;"
    req2=$"select adresse_mac, adresse_ip, nom_hôte from dhcp;"
     
    if [ "$req2" = "$req1" ]
    then 
    echo "status=ok"
    else
    STATUS="doublon adresse"
    echo #valeurs en doublon que j'aimerai récupérer | mail -s "alerte doublon adresse" 
    fi

    Merci par avance

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Bonojur,

    si je me souviens bien, mysql permet de construire une requête pour croiser des tables de base de données; pas besoin de passer par un script shell.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    Points : 65
    Points
    65
    Par défaut
    exact il y a cette possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo="SELECT * FROM dhcp LEFT JOIN fichierdat ON dhcp.adresse_mac = fichierdat.adresse_mac 
    AND dhcp.adresse_ip = fichierdat.adresse_ip 
    AND dhcp.nom_hôte = fichierdat.nom_hôte 
    WHERE fichierdat.adresse_mac IS NULL;"

    Cependant j'arrive pas à récupérer les valeurs contenue dans mon test en cas d'erreur ....

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    par exemple ... ?

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 276
    Points : 13 553
    Points
    13 553
    Par défaut
    Bonjour,

    en mysql, "select distinct" permet de regrouper les doublons. Pourquoi ne pas utiliser l'inverse, ci-dessous?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select une_colonne, count(*)
    from une_table
    group by 1
    having count(*) > 1;

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    Points : 65
    Points
    65
    Par défaut
    @ N_BaH , les valeurs que je souhaitent récupérer sont les adresses mac, adresses ip et nom d'hôte qui sont en doublons sur la table DHCP.
    @Flodelarab, je ne connaissait pas cette fonctionnalité cependant si je comprend bien votre requête, elle va lister uniquement les doublons sur une seul table exact ?

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 276
    Points : 13 553
    Points
    13 553
    Par défaut
    Oui. Vous voulez les doublons, on vous donne les doublons.

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    Points : 65
    Points
    65
    Par défaut
    exact cela fonctionne bien sur une colonne, par contre est ce normal que le traitement soit long ? ( ma table contient juste 12 entrée pour le test) ?

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 276
    Points : 13 553
    Points
    13 553
    Par défaut
    A priori, vraiment non. Quel est l'ordre de grandeur du temps long?

Discussions similaires

  1. Afficher le résultat d'une requête MySQL comme dans phpMyAdmin
    Par mathieu dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 19h48
  2. [Toutes versions] Afficher un champ lié au résultat d'une requête
    Par Akhesa13 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/02/2010, 14h39
  3. Réponses: 5
    Dernier message: 15/10/2008, 10h08
  4. Réponses: 2
    Dernier message: 02/12/2005, 22h21
  5. Réponses: 1
    Dernier message: 02/12/2005, 21h18

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