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

avec Java Discussion :

Duplication du résultat d'une requête


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 259
    Points : 128
    Points
    128
    Par défaut Duplication du résultat d'une requête
    Je fais une requête dans une base dans une base de données et il se fait que j'ai une relation one to many sur une relation ce que je n'avais pas prévu.
    J'ai donc une duplication des données :
    exple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    code   description
    1           jaune
    1           rouge
    vu que je récupère les résultats dans un bean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    type.setCode((String)objects[0]);
    type.setDescription((String)objects[1]);
    Je me retrouve avec deux beans.
    J'aimerais savoir comment faire pour regrouper les deux
    merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Si on voyais déjà la requete? Par ce que, là, pour ce que j'en vois de ta description, t'as deux lignes dans ta db, donc normal d'en faire deux beans.

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 259
    Points : 128
    Points
    128
    Par défaut
    voici la requete:
    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
     
    select 
            rn.NUMBER 
            ins.NAME
    	DRRAS.CODE
    	rra.DESC
    	from
    	Rra_ins RRA,
    	rnt_agrs rn,
           ins_typs INS,
           dvr_rras DRRAS
    	where 
    	 rn.RNT_AGR_NBR=rra.RDY_RNT_AGR_NBR(+) 
            and rra.INT_INS_TYP_ID=ins.INS_TYP_ID(+) 
            and rra.INT_CRY_ARIMP_CRY_CD=ins.CRY_ARIMP_CRY_CD(+) 
            and rn.RNT_AGR_NBR=DRRAS.RDY_RNT_AGR_NBR
    voici le résultat de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Nom  Number  code description
    Alex    1285     1       jaune
    Alex    1285     1       rouge
    J'aurais aimé contactée le résultat dans mon bean
    les descriptions(jaune et rouge ) soient pas le même champs.
    Peut être que je dois faire un tableau juste le champs description ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Points : 52
    Points
    52
    Par défaut
    Oui, ou une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<String> descritions;
    puisque cela correspond à la structure de tes données.

    Ensuite, lors de ta lecture du resultSet tu crées une map pour stocker tes objets selon leur rn.Number (si c'est lui l'identifiant).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Map<Integer, Type> types = new TreeMap<Integer, Type>();
    ...
    Integer number = (Integer) objects[ ... ];
    Type type = types.get(number);
    if (type == null) {
        type = new Type();
        type.setCode( ...)
        ...
        types.put(number, type);
    }
    type.addDescription( (String) objects[ ... ] );
    Cela t'aide t'il ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ou là, tu contracte 4 tables dans un bean

    Pour les éléments en plusieurs exemplaire, le mieux c'est de mettre la partie "différenciée" dans un Bean à part. Si, dans ton cas, c'est seulement la description, avoir


    String[] descriptions

    maintenant, pour collecter les description, ce qu'on fait habituellement, c'est

    1) une requete qui récupère tout tes [Nom Number code] et crée un bean pour chaque ligne
    2) ensuite, pour chaque bean, une requete qui récupère les descriptions

    On explorer donc la relation one-to-many en deux phase, d'abord les bean du coté "one", ensuite, pour chacun, l'ensemble des "many".

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 259
    Points : 128
    Points
    128
    Par défaut
    ce que je veux dire c'est qu'au fait :
    Nom Number code description
    Alex 1285 1 jaune
    Alex 1285 1 rouge

    est en fait un fait un seul élément :
    Alex 1285 1 rouge, jaune

    mais vu que on a une relation one to many la base renvoie deux elements ce que moi je veux c'est de regrouper les parties many comme dans l'exemple ci-dessus

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Points : 52
    Points
    52
    Par défaut
    Donc, ma réponse ou celle de tchize_ conviennent, non ?

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    sinon tu peux aussi ajouter un groupby dans la requete et utilisé une fonction de groupe qui concatène avec une virgule (voir la doc de ta DB pour çà, chaque DB a ses propres fonctions)

  9. #9
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 259
    Points : 128
    Points
    128
    Par défaut
    goup by ne s'applique que si on fait une fonction arithmétique ce qui n'est pas mon cas aussi ce n'est pas possible quand on ramène plusieurs données de différentes tables.
    La solution de tchize_ préconise deux requêtes alors que moi je ne dois en faire qu'une.

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par friedamichelle Voir le message
    goup by ne s'applique que si on fait une fonction arithmétique
    Ca dépend de la db, je sais juste que c'est possible en oracle, en utilisant des fonction serveur:

    http://www.oracle-base.com/articles/...Techniques.php

  11. #11
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 259
    Points : 128
    Points
    128
    Par défaut
    c'est cool mais il y a des fonction PL/SQL dedans alors que moi je ne qu'une simple requête.
    Une solution java peut être?

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par friedamichelle Voir le message
    c'est cool mais il y a des fonction PL/SQL dedans alors que moi je ne qu'une simple requête.
    Une solution java peut être?
    Comme mentionné: plusieurs requêtes.

Discussions similaires

  1. Comparer le résultat d'une requête
    Par VirginieGE dans le forum ASP
    Réponses: 3
    Dernier message: 10/08/2004, 15h15
  2. Arrondir le résultat d'une requête
    Par wautierp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2004, 11h56
  3. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 13h51
  4. Résultat d'une requète SQL
    Par camino dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2004, 15h22
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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