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 :

Comparer 2 tables par couple de chiffre


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Comparer 2 tables par couple de chiffre
    Salut,
    J'ai donc un problème de syntaxe sur une requete sql. J'ai 2 tables de données dans une même base qui contiennent chacune des formules de 7 chiffres. Le but de la requete est de prendre une ligne (ligne1) de ma Table1 qui contient une formule et de comparer ces chiffres par couple avec les formules de la Table2 pour voir dans combien de formules de la Table2 je retrouve un couple fait avec les chiffres de la ligne1 de ma Table1.
    exemple :

    Table1
    ________________________________
    ligne |nb1|nb2|nb3|nb4|nb5|nb6|nb7|
    --1--|10 | 11 | 32 | 54| 15 | 18| 23 |
    ________________________________|

    Table2
    ________________________________
    ligne |nb1|nb2|nb3|nb4|nb5|nb6|nb7|
    -1 --|10 | 11 | 31 | 28| 13 | 42| 24 |
    -2 --|15 | 18 | 17 | 19| 68 | 78| 90 |
    _________________________________

    me requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql='SELECT COUNT(ligne) 
      from Table2 
      WHERE "couple de nombre de ligne 1 de Table1" se retouve dans "ligne 1 ou 2 de Table2 ';
    réponse attendue:
    $req=2
    et éventuellement si cela est possible savoir dans une autre requete à quels lignes quel couple... exemple : couple 10-11 en ligne 1 de Table2 et couple 15-18 en ligne 2 de Table2

    Tout ça me dépasse et je n'y arrive pas à mon niveau...
    merci de votre aide.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Question : tes données sont des bases de données différentes ou dans des tables différentes de la même base ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    oui tiens une erreur de ma part dans ma question...
    Il s'agit de la même base de donnée qui contient deux tables différentes.
    Question corrigée

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tant mieux ! parce que la comparaison entre bases aurait été un chouïa problématique.

    Donc maintenant ce qu'il faut préciser c'est
    1) ce que tu cherches à faire exactement : qu'appelles-tu un couple de chiffres ? la valeur de 2 des champs au hasard de la table ? de 2 champs particuliers ? est-ce qu'ils doivent être dans les mêmes champs dans la table 1 ?

    2) ce qui bloque dans le script : l'écriture de la requête, l'interrogation de la base depuis php, l'exploitation des résultats ...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Je vais essayé de préciser tout ça.
    Ce que je cherche à faire:
    Je voudrais dans la requete que la valeur de chacun des champs de la table1 soit associée tour à tour à la valeur d'un autre champs de la table1, voilà ce que j'appel un couple de valeur, pour être comparé aux valeurs des champs de la table2, mais que la comparaison de ce couple de valeur soit fait ligne par ligne dans la table2. Et il faudrait que tous les couples de valeur possibles dans la ligne de la table1 soient testés les uns après les autres.

    Pour l'instant ce qui bloque c'est l'écriture de la requete pour compter le nombre de fois ou un de mes couples de valeur d'une ligne de la table1 se retrouve dans une des lignes de la table2. Si après il est possible dans une variable tableau de mettre le nom de la ligne de la table2 ou le couple de valeur a été trouvé, c'est encore mieux.

    Pour l'exploitation des résultats et l'affichage je vais essayer de ma dépatouiller pour apprendre. Et on verra...

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Donc ça peut être n'importe quels champs dans les deux tables, pourvu qu'il yait un couple de nombres identiques ? genre table1 : champ1= 10, champ3 = 12 et table2 : champ4=10 et champ5= 12 ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    exactement

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ben ça va pas être de la tarte...
    Je ne suis pas sûre que la structure de tes tables soit vraiment adapté à ce que tu cherches à récupérer, surtout si l'emplacement des nombres n'est pas vraiment important.

    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    si je résume, tu as 7 valeurs sur ta ligne 1 de ta 1ere table
    tu dois trouver les lignes de table2 qui ont au minimum 2 valeurs correspondant à cette liste de 7 valeurs?
    c'est bien cela?

  10. #10
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    salut,
    C'est bien ça.
    Tu as une suggestion pour me désembourber?

  11. #11
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    une solution pas vraiment...
    imagine déjà la requête pour vérifier que dans une ligne de table2, tu as la valeur de nb1 de ta table1...
    il faut faire cela pour tes 7 valeurs et regarder ceux qui en ont au moins deux...
    avec un tel modèle, quasi impossible

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je proposerais bien une structure de table genre (id, n_ligne, valeur) ce qui ferait 7 enregistrements par n_ligne. ce serait sans doute moins compliqué à gérer...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 47
    Points
    47
    Par défaut
    Salut,

    Mysql gère les regexp non ?

    Pourquoi ne pas concaténer tes lignes de chiffres (avec un séparateur) et vérifier les correspondances des couples via une expression régulière ?

  14. #14
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 47
    Points
    47
    Par défaut
    Voilà désolé de ne pas l'avoir fait plus tôt mais je préfère tester avant de l'ouvrir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT distinct id 
    FROM (
      SELECT CONCAT('(,?(', t1.nb1, '|', t1.nb2, '|',  t1.nb3, '|',  t1.nb4, '|',  t1.nb5, '|',  t1.nb6, '|',  t1.nb7, '),?){2,}') AS nbs1, 
        CONCAT_WS(',', t2.nb1, t2.nb2, t2.nb3, t2.nb4, t2.nb5, t2.nb6, t2.nb7) AS nbs2, 
        t1.id as id 
      FROM `table1` t1, `table2` t2
    ) AS r 
    WHERE nbs2 REGEXP nbs1
    Bon je sais, ça ne paie pas de mine comme ça, mais ça fonctionne bien.
    donc là ça te renverra les ID des entrées de la table 1 qui ont au moins 2 nombres de commun avec les entrées de la table 2.

    note que si tu veux SEULEMENT 2 nombres commun (pas un de plus), remplace le {2,} par {2}.

    (hé oui je met en application ce que j'ai appris dans mon topic :p)

    A+

  15. #15
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci kipy4,

    Je prend ça, je le bidouille, je le trifouille et je le colle.
    Je reviens dès que j'ai progressé pour dire si j'arrive à le mettre en oeuvre ce code.
    Encore merci

  16. #16
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    me-revoilou après avoir essayé de comprendre tout ça.

    Mais j'ai une erreur de syntaxe en retour sur ma ligne de requete.
    Tu as bien pris comme structure de table (id, n_ligne, nb1,nb2,nb3,nb4,nb5,nb6,nb7)?. Est ce qu'il faut pas un p'tit ', en plus avant t1.nb1 dans : (,?(', t1.nb1, '|', t1.nb2, '|', t1.nb3, '|', t1.nb4, '|', t1.nb5, '|', t1.nb6, '|', t1.nb7, '),?){2,}') ?
    Je cherche encore à la débusquer cette fatidique parse error...

  17. #17
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    A quel niveau est l'erreur de syntaxe?
    tu as repris exactement la même requête ou tu l'as modifié?

  18. #18
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Je l'ai repris telle quelle pour voir si ça fonctionnait bien. et là :
    Parse error: parse error in C:\wamp\www\PHP\test.php on line 42
    ligne 42 c'est celle de la requète sans modif aucune :
    $sql = 'SELECT DISTINCT id FROM(...)AS r WHERE nbs2 REGEXP nbs1';
    J'ai essayé de trouver l'errreur, mais là je plante. ça n'a pas l'air de venir d'un problème de structure de table. J'ai bien un doute sur un placement de parenthèse et une apostrophe, mais je laisse l'auteur juge

  19. #19
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    avec des double quotes autour de ta requête

  20. #20
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je te conseille de tester ta requête d'abord dans phpMyAdmin histoire d'être sûr que ça fonctionne comme tu veux.
    Et si ensuite l'intégration PHP ne se passe bien, on récupèrera le sujet
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  2. Réponses: 9
    Dernier message: 27/10/2004, 01h31
  3. [sybase] Suppression de tables par lot
    Par Higgins dans le forum Sybase
    Réponses: 2
    Dernier message: 30/09/2004, 16h42
  4. liste des tables par base
    Par rupert dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/05/2004, 09h38
  5. Comment obtenir la description des tables par SQL
    Par rcastaldi dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/03/2004, 14h13

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