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

Requêtes MySQL Discussion :

Trouver tous les couples (a,b) pour lesquels à chaque a correspond un seul b


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Points : 42
    Points
    42
    Par défaut Trouver tous les couples (a,b) pour lesquels à chaque a correspond un seul b
    Bonjour je vous expose mon problème.

    J'ai une base remplie grâce à une sonde réseau

    Dans cette base il n'y a qu'un seule table contenant les champs des en-têtes (adr MAC source adr MAC destinataire , adr IP source...)

    Je voudrai retrouver tout les couples Adr MAC Adr IP pour lesquels il n'y a qu'une seule IP associée à la MAC.

    Si je suis pas clair je veut bien essayer d'expliquer un peu mieux ...

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par wixaw Voir le message
    Je voudrai retrouver tout les couples Adr MAC Adr IP pour lesquels il n'y a qu'une seule IP associée à la MAC.
    Il faut donc compter combien il y a d'adresser IP en relation avec chaque adresse MAC et ne retenir que les comptages égaux à 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT t1.adresse_MAC, t1.adresse_IP
    FROM la_table AS t1
    INNER JOIN (
      SELECT adresse_MAC, COUNT(adress_IP) AS nb_adresses_ip
      FROM la_table
      GROUP BY adresse_MAC
      HAVING COUNT(adress_IP) = 1
    ) AS t2 ON t2.adresse_MAC = t1.adresse_MAC
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Points : 42
    Points
    42
    Par défaut
    Merci

    voici comment je l'ai adapté à ma base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT t1.eth_mac_src, t1.ip_src
    FROM capture as t1
    INNER JOIN (
      SELECT eth_mac_src, COUNT(ip_src) AS nb_adresses_ip
      FROM capture
      WHERE ip_src is not null and ip_src!= '0.0.0.0'
      GROUP BY eth_mac_src
      HAVING COUNT(ip_src) = 1
    ) AS t2 ON t2.eth_mac_src = t1.eth_mac_src;
    J'ai rajouté la clause where car la plupart (mais pas toutes) des adresse MAC ont été associée, au moins une fois, à l'adresse '0.0.0.0' ou meme on été associé à aucune adresse IP (donc ip_src = NULL).

    Avec cette requête j'obtient 6088 lignes alors que je n'ai que 557 MAC différentes. Pour obtenir toutes les MAC j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT distinct eth_mac_src 
    FROM capture
    WHERE ip_src is not null
    UNION
    SELECT distinct eth_mac_dst 
    FROM capture
    WHERE ip_dst is not null
    Mais peut être cette requête est fausse ?

    Mon but est le suivant je souhaite remplir un tableau MAC IP NOM avec les données de ma tables

    donc je voudrais trouver toutes les adresses MAC pour lesquels l'ip est uniques et les associés ensuite je voudrais trouver toutes les adresses MAC ayant plusieurs IP et demander à l'utilisateur de choisir.

    je sais pas si il n'y a pas de solution plus facile et j'espère être clair.

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Points : 42
    Points
    42
    Par défaut
    Je viens de penser à autre chose :

    Es que c'est plus simple si je fais une procédure qui parcours les n-uplet et me renvoie un tableau MAC IP

    Pour chaque n-uplet:
    il prend la MAC
    SI MAC déjà intégrée dans le tableau et que l'ip associée n'est pas null ou égale à 0.0.0.0 alors prend mac suivante
    SINON
    il associe l'IP à la MAC

    qu'en pensez vous?

Discussions similaires

  1. [RegEx] preg_match pour trouver tous les noms de variables php
    Par djaih dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2011, 18h28
  2. [RegEx] Trouver tous les "/mot" dans une chaîne
    Par micatmidog dans le forum Langage
    Réponses: 7
    Dernier message: 31/03/2006, 12h07
  3. [TWebBrowser] Comment trouver tous les liens dans une page ?
    Par xenos dans le forum Composants VCL
    Réponses: 1
    Dernier message: 15/01/2006, 23h36
  4. Trouver tous les objets d'un certain type dans un document?
    Par kobe dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 03/11/2005, 17h07

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