2010-06-02 9 views
1

J'ai une relation un-plusieurs dans mon local Sqlite db. Des trucs assez basiques. Quand je fais ma jointure externe gauche je rentrerai résultats qui ressemblent à ceci:Traiter avec Sqlite Joindre les résultats dans un curseur

le curseur résultant a plusieurs lignes qui ressemblent à ceci:

A1.id | A1.column1 | A1.column2 | B1.a_id_fk | B1.column1 | B1.column2 

A1.id | A1.column1 | A1.column2 | B2.a_id_fk | B2.column1 | B2.column2 

et ainsi de suite ...

est-il une pratique standard ou une méthode de traitement des résultats comme celui-ci? Clairement, il n'y a que A1, mais il y a beaucoup de relations B-n. Je suis proche d'utiliser plusieurs requêtes au lieu de la "manière db relationnelle". J'espère ne pas être au courant de la meilleure façon de faire les choses.

J'ai l'intention d'exposer cette requête via un fournisseur de contenu et je détesterais que tous les consommateurs aient à écrire la même logique d'agrégation.

+0

Pouvez-vous publier l'instruction SQL que vous utilisez pour votre requête? – m6tt

Répondre

2

Les jointures ont fonctionné de cette façon dans toutes les bases de données SQL que j'ai jamais utilisées - c'est un peu la définition du concept. N'oubliez pas que les fournisseurs de contenu impliquent des appels de procédure à distance, qui sont coûteux. C'est l'une des raisons pour lesquelles Android dénormalise les résultats dans le même sens que votre jointure pour des choses comme les contacts, pour minimiser les allers-retours entre les processus.

Vous pouvez envisager d'utiliser un service distant au lieu d'un fournisseur de contenu et d'exposer une API personnalisée. Vous pouvez retourner les B pour un A donné par un simple List<>. Ou, vous pourriez sérialiser l'ensemble au format JSON. Ou n'importe quel nombre d'autres possibilités, si la duplication de données vous dérange.

Questions connexes