2010-07-01 5 views
0

J'ai un code qui affiche une liste d'éléments basés sur un adaptateur personnalisé. Pour afficher un contenu d'une table sans problème mais quand j'ai besoin d'ajouter une référence à beaucoup de tables c'est autre chose. Deux solutions sont possibles dans mon point de vue:Obtenir une table à la volée avec sqlite

1) Interroger la base de données à l'intérieur setViewValue (ne pas enquêter sur trop cette possibilité) ou 2) Trouver un moyen d'associer dynamiquement une colonne à mes autres tables

(la solution pour les deux sont les bienvenus)

J'ai une table principale où une colonne appelée slug est une référence à d'autres tables. Ces autres tables contiennent des données que je voudrais compter.

Une fois que j'ai ma requête j'utilise un SimpleCursorAdapter pour afficher une belle liste dans android (par exemple 1024 (2 ref), 2048 (3 ref) ...).

Je pense qu'un petit schéma est probablement meilleur que mon explication.

Table: A 
----------------------- 
_id | slug | value | 
----------------------- 
1  | a_a | 1024 | 
2  | g_z | 2048 | 
----------------------- 


Table: mytable_a_a 
---------------- 
_id | value | 
---------------- 
1  | xxx | 
2  | yyy | 
---------------- 

Table: mytable_g_z 
---------------- 
_id | value | 
---------------- 
1  | xxx | 
2  | yyy | 
3  | zzz | 
---------------- 


The goal is to produce something like 

------------------------------- 
_id | slug | value | count 
------------------------------- 
1  | a_a | 1024 | 2 
2  | g_z | 2048 | 3 
... 

J'ai essayé quelque chose comme:

SELECT * FROM A UNION SELECT COUNT (*) DE A.slug;

mais il me manque le point et si une solution existe, ce serait un peu plus compliqué.

solution possible: inclure un compteur dans la table un

Merci

Répondre

0

Étant donné que vos noms de table ne peuvent être obtenus à partir d'une requête, vous devez utiliser SQL dynamique, à savoir concaténer la requête SQL chaîne basée sur les valeurs que vous avez précédemment obtenues à partir de la base de données. C'est un peu maladroit au mieux. Vous pouvez le rendre beaucoup plus facile en le concevant différemment, par exemple en stockant toutes vos données mytable_x_x dans une seule table et en utilisant x_x comme une clé sur laquelle vous pouvez vous joindre. Ensuite, vous pouvez obtenir le résultat dans une seule requête.

+0

Merci pour votre réponse, je fais une pré-requête maintenant pour avoir les limaces et ça marche bien – Kevin