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

Langage SQL Discussion :

Comparer les valeurs de deux colonnes d'une table


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 56
    Par défaut Comparer les valeurs de deux colonnes d'une table
    Bonjour à tous !

    Je suis nouveau dans les bases de données.

    J'une table nommée coordab ayant 3 colonnes : IMSI, MDN, NUMF . Mon souci de savoir la requête qui permet de:

    - Prendre chaque ligne de NUMF et comparer ses 7 derniers chiffres aux 7 derniers chiffres de chaque ligne de IMSI

    - Là où ces 7 derniers chiffres sont égaux, il recupère cette ligne IMSI, et le MDN de cette ligne ainsi que la ligne NUMF testé.

    Exemple:

    ------IMSI----------------------MDN------------NUMF
    624030743830010-------2373300002E-------2333000034
    624030743830015-------2373300002S------2333830023
    624030743830019-------237330000D1-------2333000015
    624030743830023---2373300002N--------2333000084
    624030743830000-------237330000DO-------2333000009

    Résultats:

    NUMF : 2333830023
    IMSI : 624030743830023
    MDN : 2373300002N


    S'il vous plait aidez moi.
    Merci d'avance.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    quel est votre SGBDR ?

    Vous pouvez faire une auto-jointure, en comparant NUMF aux 7 derniers caractères de IMSI, mais... n'attendez pas de bonnes performances d'une telle requête !

  3. #3
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    En ajoutant une colonne calculée (qui ne contiendrait que les 7 derniers caractères de IMSI) et en réalisant l'auto-jointure comme proposé par aieeeuuuuu, cela devrait accélérer l'exécution (si création des index adéquats)

    a+
    olivier

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Citation Envoyé par dehorter olivier Voir le message
    En ajoutant une colonne calculée (qui ne contiendrait que les 7 derniers caractères de IMSI)
    Ou en créant un index sur cette expression...
    Encore faudrait-il que l'une ou l'autre de ces fonctionnalités soit prise en charge par le SGBD utilisé
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 56
    Par défaut
    J'utilise MySQL

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Quelle est la structure de tes tables de quels types sont les différentes colonnes , entier, varchar, varchar(15)....
    Quelle version de MySQL? Il me semble que les très anciennes versions de Mysql ne supportaient pas les sous-requêtes.

    Cordialement
    Soazig

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 56
    Par défaut
    Merci pour votre AIDE.

    En fait j'ai fait une erreur au niveau l'énoncé:

    Voici mon problème:

    J'ai une table nommée coordab ayant 2 colonnes : IMSI, MDN
    et une autre table de nom numero ayant une colonne de nom NUMF .
    Mon souci de savoir la requête qui permet de:
    - Prendre chaque ligne de la colonne NUMF de la table numero et comparer ses 7 derniers
    chiffres aux 7 derniers chiffres de chaque ligne de la colonne IMSI.
    - Là où ces 7 derniers chiffres sont égaux, il recupère cette ligne IMSI, et le MDN de cette
    ligne ainsi que la ligne NUMF testé (de la table numero).

    Exemple:

    ------IMSI--------------------MDN------------NUMF (de la table numero)

    624030743830010-------2373300002E-------2333000034
    624030743830015-------2373300002S------2333830023
    624030743830019-------237330000D1-------2333000015
    624030743830023---2373300002N-----2333000084
    624030743830000-------237330000DO-------2333000009

    Résultats:


    NUMF : 2333830023
    IMSI : 624030743830023
    MDN : 2373300002N


    Voici mon code:
    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
    29
    30
     
        <?php	
    set_time_limit(0);
    error_reporting(E_ALL ^ E_NOTICE);
     
    	//Connexion à la BD
    mysql_connect('localhost','root','');
    mysql_select_db('gestnum');
     
    $sql = 'select t1.IMSI, t1.MDN, t2.NUMF
    from coordab t1
    inner join (
        select distinct NUMF from numero
    ) t2 ON SUBSTRING(t2.NUMF, -7) = SUBSTRING(t1.IMSI, -7)';
     
    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $i=0; 
    // on va scanner tous les tuples un par un
    while ($data = mysql_fetch_array($req)) 
        {
    	$i++; 
    	// on affiche les résultats
    	echo 'IMSI : '.$data['IMSI'].'<br />';
    	echo 'MDN : '.$data['MDN'].'<br />';
    	echo 'NUMF : '.$data['NUMF'].'<br /><br />';
        }
    mysql_free_result ($req);
    mysql_close ();
    ?>
    Quand j'exécute ce code, j'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur SQL !
    select t1.IMSI, t1.MDN, t2.NUMF from coordab t1 inner join ( select distinct NUMF from numero ) t2 ON SUBSTRING(t2.NUMF, -7) = SUBSTRING(t1.IMSI, -7)
    Unknown column 'NUMF' in 'field list'
    S'il vous plait aidez moi, je ne connais pas.
    Merci d'avance.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/01/2013, 11h03
  2. Comparer les valeurs de deux colonnes d'une feuille excel
    Par charrynsasi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/12/2012, 14h40
  3. [DeskI XiR2] Comparer les valeurs de deux colonnes
    Par EmmanuelleC dans le forum Débuter
    Réponses: 2
    Dernier message: 27/02/2009, 08h45
  4. Réponses: 13
    Dernier message: 20/04/2007, 17h30
  5. Réponses: 8
    Dernier message: 19/04/2007, 19h41

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