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

PHP & Base de données Discussion :

Différence entre tables [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Par défaut Différence entre tables
    Bonjour,

    J'aimerais effectuer une requête permettant de n'afficher en résultat que la différence entre deux tables (test sur un champ pas table uniquemet).
    Exemple :
    table_1 :
    id_table_1 = 1
    id_table_1 = 2
    id_table_1 = 3
    id_table_1 = 4
    id_table_1 = 5
    id_table_1 = 6


    table_2 :
    id_table_2 = 1
    id_table_2 = 2
    id_table_2 = 4

    Résultat à afficher :
    id = 3
    id = 5
    id = 6

    Sachant qu'un id appartenant à la première table existera toujours dans la première.

    Existe-t'il une fonction du type "INNER JOIN" mais inversée pour effectuer ce genre d'opération ?

    En espérant avoir été suffisamment clair, merci pour vos réponses.

  2. #2
    Membre expérimenté Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Par défaut
    essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT table1.id FROM table1, table2 WHERE table1.id != table2.id

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Par défaut
    Bon pour l'instant, je n'ai aucun résultat trouvé, j'ai dû rater quelque chose.

    EDIT : Mes tables ne sont pas identiques, est-ce que ça peut poser problème ?

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Par défaut
    Du nouveau,

    Ma 2° table étant vide, j'ai créé une ligne. Maintenant, le résultat de la requête correspond à une égalité du test :
    table1.id != table2.idet non à une inégalité, et me renvoie donc toujours le même résultat. L'inverse de ce qui est demandé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT revisions.rev_id, revisions.rev_quest, revisions.rev_image, revisions.rev_qcm, revisions.rev_choix_1, revisions.rev_choix_2, revisions.rev_choix_3, revisions.rev_choix_4, revisions.rev_rep FROM revisions, rev_suivi WHERE (revisions.rev_niveau<="'.$_POST['niveau'].'" and revisions.rev_id != rev_suivi.rs_id_quest)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 27
    Par défaut
    Bonjour,

    Ca ne marchera pas avec la requête proposé mais avec une sous requête oui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT* FROM table1 WHERE id_table_1 NOT IN(SELECTid_table2 FROM table2)
    pas testé mais c'est dans l'esprit.

    ensuite si tu peux aussi faire cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT* FROM table1 LEFT JOIN table2 on id_table_1 =  id_table_2
    jointure à gauche, tu va avoir tous les id de la table 1 qui ont ou non un id dans la table 2 sauf que dans le même temps tu auras les di tables 2 pour ceux qui existent, null pour les autres. en parcourant ton résultat, tu peux travailler la dessus et ne prendre en compte que ceux qui ont in id_table2 qui vaut null

  6. #6
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Par défaut
    Super,

    Ça fonctionne, j'ai essayé avec la solution "NOT IN" qui me semble dans ce cas plus adaptée !

    Merci beaucoup

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

Discussions similaires

  1. Différence entre table et tabular
    Par Erlen dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 17/10/2010, 18h17
  2. Trouver des différences entre tables
    Par how_much dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/01/2010, 13h09
  3. différence entre table et objet
    Par karinal dans le forum UML
    Réponses: 2
    Dernier message: 08/07/2008, 15h39
  4. [XHTML] différence entre TABLE et FRAME
    Par Mma88 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/10/2006, 10h09
  5. 2 tables; requête : retourner différences entre les 2
    Par azerty dans le forum Langage SQL
    Réponses: 15
    Dernier message: 09/09/2003, 18h35

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