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

Hibernate Java Discussion :

Requête pour comparer 2 tables


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut Requête pour comparer 2 tables
    Bonjour,

    J'aimerais comparer Deux tables et avoir comme résultat la DIFFÉRENCE entre elles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PERSONNE
      - id
      - nom
      - prenom
      - ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    AUTHENTIFICATION
      - idaut
      - Login
      - mpass
      - FKpersonneid
    Je veux avoir la liste des personne qui ne figure pas dans la table AUTHENTIFICATION (C.a.d les personnes qui n'ont pas le "FKpersonneid" présent dans AUTHENTIFICATION).

    voici un essai mais qui me donne un faux résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Personne> lstpers=HibernateTemplate.find(FROM Personne WHERE id NOT IN (FROM AUTHENTIFICATION));

    je ne trouve pas la syntaxe exacte en HQL pour la requete !

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 51
    Par défaut
    from personne, authentification where personne.id = authentification.FKPersonneId

    à tester, je ne suis vraiment plus très sûr de comment ça fonctionne. Ca fait longtemps...

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Non ça marche pas et j'ai une "hibernateQuerryException"

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Bonjour,

    Pour donner une requête HQL, il nous faudrait les relations au sens objet et non relationnel sinon c'est du SQL !

    Tu ne peux faire de différence (au sens strict) si les ensembles ne sont pas homogènes (cf. algèbre relationnel). Ce que tu cherches ce sont "Les personnes qui ne n'ont pas d'authentification".

    en SQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT a.* FROM a.personne WHERE a.id IN (SELECT b.id FROM personne b MINUS SELECT c.FKpersonneid FROM authentification);
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    C'est exactement ce que je veux dire.


    Pour le modèle OBJET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Class Personne{
    int id
    String nom
    ...}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Class Authentification{
    int idaut;
    String login;
    String mpass;
    Personne  FKpersonneid ;
    }
    je vais essayer de traduire ça en HQL et voir le resultat.

    merci

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    A noter que pour ce genre de requêtes il est amplement préférable de passer par une jointure externe pour des questions de performance, l'opérateur in (et le not in par extension) produisant des query plan relativement dégueulasses au niveau SGBD.

    exemple ni compilé ni testé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select distinct t        
      from Personne t
      left join fetch t.Authentification auth with auth.id is null

Discussions similaires

  1. Requète pour syncrhoniser 2 tables
    Par jeanflo037 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 15/05/2009, 17h12
  2. Requête pour comparer cote à cote deux colonnes
    Par Andry dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/11/2008, 12h52
  3. Réponses: 4
    Dernier message: 05/10/2008, 02h41
  4. Tableau pour Comparer deux tables
    Par Frog74 dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/04/2008, 10h09
  5. [SQL] Requête pour comparer 2 dates
    Par ideal23 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 04/12/2007, 17h20

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