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 :

Requêtes de comparaison


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut Requêtes de comparaison
    Bonjour

    Je cherche à comparer les donnés de deux tables qui ne sont pas liées par les ids
    Pour afficher les donnés en communs , une parties en communs et pas présent sur l'autre table

    Exemple

    J'ai deux tables
    Personne

    nom
    prenom
    matricule
    numSecu
    statut
    ect...

    TicketMod

    nom
    prenom
    matricule
    numSecu
    statut
    ect..

    l'idée est de chercher sur la table TicketMod

    les données qui sont dans la table Personne et les Affichés
    Resultats attendus

    TicketModTrouvés
    c'est les donnés de la table Personne et que l'ont retrouve dans TicketModTrouvés

    TicketModSemiTrouvés

    C'est une partie des donnés de Personne par exemple nom, prenom avec un matricule ou un numSecu différent parceque y a eu des erreurs de saisies par exemples dans TicketModTrouvés

    Et Enfin TicketModPasTrouvés

    C'est les donnés qui sont TicketMod et que l'ont retrouve pas dans Personne

    En espérant que je me suis fais comprendre

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Regardez du côté des opérateurs EXCEPT et INTERSECT.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Merci pour la réponse
    j'ai fais des choses comme ça mais ça retourne pas les résultats attendus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT t  
    FROM TicketMod t, Personne p  
    WHERE t.nom LIKE p.prenom 
        and t.nom LIKE p.prenom 
        and t.matricule LIKE p.matricule

  4. #4
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    1) Utiliser LIKE sans caractère générique est équivalent à = alors autant utiliser = !

    2) On vous a proposé EXCEPT et INTERSECT et vous donnez une requête sans ces opérateurs !

    3) Vous pouvez aussi utiliser EXISTS et NOT EXISTS si votre SGBD ne connaît pas EXCEPT et INTERSECT.

    TicketModTrouvés
    c'est les donnés de la table Personne et que l'ont retrouve dans TicketModTrouvés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT p.nom, p.prenom, p.matricule, p.numSecu, p.statut
    FROM Personne p
    WHERE EXISTS
    (
    	SELECT 1
    	FROM TicketMod t
    	WHERE t.nom = p.nom
    		AND t.prenom = p.nom
    		AND t.matricule = p.matricule
    		AND t.numSecu = p.numSecu
    		AND t.statut = p.statut
    )
    Le même résultat peut aussi être obtenu avec une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT p.nom, p.prenom, p.matricule, p.numSecu, p.statut
    FROM Personne p
    INNER JOIN TicketMod t
    	ON t.nom = p.nom
    	AND t.prenom = p.nom
    	AND t.matricule = p.matricule
    	AND t.numSecu = p.numSecu
    	AND t.statut = p.statut
    TicketModSemiTrouvés

    C'est une partie des donnés de Personne par exemple nom, prenom avec un matricule ou un numSecu différent parceque y a eu des erreurs de saisies par exemples dans TicketModTrouvés
    Même principe :
    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
    SELECT p.nom, p.prenom, 
    	p.matricule AS matricule_personne,
    	t.matricule AS matricule_ticketMod,
    	p.numSecu AS numSecu_personne,
    	t.numSecu AS numSecu_TicketMod,
    	p.statut AS statut_personne,
    	t.statut AS statut_ticketMod
    FROM Personne p
    INNER JOIN TicketMod t
    	ON t.nom = p.nom
    	AND t.prenom = p.nom
    	AND
    	(
    		t.matricule <> p.matricule
    		OR t.numSecu <> p.numSecu
    		OR t.statut <> p.statut
    	)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Merci A tous

    C'est parce que j'utilise JPQL et il ne supporte pas EXCEPT et INTERSECT
    Sinon je dois le faire dans l'autre sens c'est à dire récupérer les donnés dans la table TicketMod , puisque on peut retrouver les même donnés de la même personne plusieurs fois pour montrer que c'est un TicketMod valide

    Encore Merci et bonne et heureuse année

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    J'ai lu en diagonale le post, ce qui m'a frappé dans les requetes c'est :
    N'y aurait-il pas une coquille ? Serait-ce plutôt?
    A+
    Soazig

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Merci bien vue
    Sinon C'est une erreur de frappe de ma part

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

Discussions similaires

  1. [MySQL] Affichage sur requête à condition / comparaison
    Par xyvrak dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 29/03/2007, 19h02
  2. Requête avec comparaison pour la date
    Par buzz! dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 10/08/2006, 18h00
  3. requète critère comparaison 2 elements de table
    Par slackjayo dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 22h43
  4. [AQL] Requête de comparaison de 2 zones de texte
    Par babouoles dans le forum Langage SQL
    Réponses: 10
    Dernier message: 01/02/2006, 16h35
  5. Requête de comparaison
    Par Jess71 dans le forum Access
    Réponses: 2
    Dernier message: 22/09/2005, 09h26

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