J'ai deux ensembles de résultats (rs1
et rs2
) ayant les mêmes champs. Maintenant, comment combiner ces deux ensembles de résultats en un afin que les lignes en double soient montrées une fois.Comment combiner deux ResultSets en Java?
Répondre
si les deux ResultSet
s proviennent de la même base de données, alors pourquoi ne pas les combiner lors de la récupération en utilisant union
; par exemple.
select A, B
from C
union
select A, B
from D
Cependant, si ce n'est pas une option alors je suggère que la définition d'une classe pour représenter une ligne extraite de votre ResultSet
et la mise en œuvre equals
/hashCode
pour permettre au à comparer l'égalité. Puis ajoutez simplement chaque à Set
(par exemple HashSet
) afin de supprimer les doublons.
Vous pouvez:
- Créer une classe qui a des propriétés correspondant aux colonnes
- mettre en œuvre les
equals()
ethashCode()
méthodes utilisant les champs par lesquels vous définissez « dupliquer » (laissez votre aide IDE vous avec le génération de ceux-ci) createa un
Set
(HashSet
):Set combinedDataSet = new HashSet();
Itérer chaque resultSet et construire des objets:
while (rs1.next) { YourClass obj = new YourClass(); obj.setSomeProperty(rs.getString(1)); obj.setAnotherProperty(rs.getString(2)); // etc.. cominbedDataSet.add(obj); }
La même itération va pour
rs2
Est-ce que dans le cas où vous ne pouvez pas obtenir le résultat souhaité par un Requête SQL
+1 ... .......... :) –
@Bozho Je veux communiquer avec vous. Je n'ai aucun problème de programmation que je peux poster ici. Vous avez répondu à plusieurs de mes questions et ainsi, je sais que vous êtes la bonne personne pour avoir des conseils de votre part pour ma carrière. J'ai également vérifié votre blog mais je n'ai trouvé aucun moyen de communiquer avec vous. Je ne veux pas utiliser SO pour communiquer avec vous, car ce serait faux. Je vous serais très reconnaissant si vous me donnez du temps de votre précieux temps et dites-moi comment puis-je discuter avec vous. Merci. –
@Yatendra Goel si vous avez des questions particulières, demandez-les au SO. Si vous avez des questions moins spécifiques, consultez mon blog (lié dans mon profil ici) et envoyez-moi un commentaire. – Bozho
- 1. Combiner des annotations en Java
- 2. Comment combiner deux boucles foreach en une
- 3. Combiner deux textures en une
- 4. Comment combiner deux résultats jQuery
- 5. Comment combiner deux fonctions JQuery
- 6. Comment combiner deux requêtes sql?
- 7. comment éviter sqlcmd ligne vide entre Resultsets?
- 8. Comment puis-je combiner deux projets Android
- 9. combiner deux tableaux
- 10. Comment combiner deux ensembles de résultats d'une table triés indépendamment en utilisant une requête SQL?
- 11. Python: combiner deux scripts en un seul
- 12. Mixer deux chaînes en Java
- 13. Comment combiner deux expressions: résultat = exp1 (exp2);
- 14. Comment combiner deux images mono-couleurs?
- 15. Comment combiner deux actions d'animation jQuery?
- 16. Comment combiner ces deux fonctions JavaScript?
- 17. Comment combiner et optimiser ces deux requêtes?
- 18. Comment combiner deux lignes en fonction des horodatages
- 19. En NHibernate, comment puis-je combiner deux instances DetachedCriteria
- 20. comment puis-je combiner et additionner deux résultats en SQL?
- 21. Comment puis-je combiner deux requêtes mysql en une seule?
- 22. Comment combiner ces deux sqls en un seul?
- 23. Comment combiner deux modèles en un RoR acts_as_tree treeview?
- 24. Comment combiner deux projets dans Mercurial?
- 25. Comment combiner deux référentiels Git distincts?
- 26. comment combiner deux projets sur iPhone?
- 27. Comment combiner deux Zend_Forms dans un Zend_Form?
- 28. Comment combiner deux datables ensemble C#
- 29. Combiner deux morceaux de JQUERY
- 30. Rails 3 Combiner deux variables
+1 ... bonne réponse ... très précise et au point ... Je voudrais vous upvote 10 fois si j'avais les droits. –
UNION supprime les doublons, forçant un tri. UNION ALL concatène les ensembles de résultats de manière fonctionnelle. Si les tours sont acceptables ou si vous savez que les deux ensembles de résultats ne se chevauchent pas, utilisez UNION ALL. –
@Adam: L'OP a déjà déclaré qu'il voulait que les lignes en double ne soient affichées qu'une seule fois, d'où la raison pour laquelle j'ai mentionné UNION plutôt que UNION ALL. – Adamski