2012-12-21 3 views
2

Je crée une application android en utilisant une base de données SQL avec plusieurs tables. J'ai besoin de sélectionner des rangées de façon aléatoire à partir de certaines ou de toutes les tables (il y en a environ 8).Interrogation aléatoire de plusieurs tables avec une limite

J'ai essayé la requête suivante, mais elle me donne une "IndexOutOfBoundsException" en Java, la requête ne sélectionne que les données de la table "core" et ignore la table "parking". Où ai-je mal tourné? J'ai lu à propos de la fonction JOIN, s'applique-t-elle ici?

 c = myDataBase.rawQuery(
    "SELECT * FROM core, parking" + " ORDER BY RANDOM() LIMIT " + rounds, null); 

Toutes les tables utilisent la même structure de colonne, mais le numéro de colonne chevauche pour chacun (par exemple, pour 8 tables, il y a des identifiants 8 colonne « 1 ») .Les ID de colonne ne sont pas utilisés dans l'application.

Répondre

2

il doit y avoir une colonne qui existe dans les deux .. ID tableau c.-à- puis écrire comme

SELECT * FROM core as c, parking as p where c.ID=p.ID " + " ORDER BY RANDOM() LIMIT 
+0

Merci pour la réponse, en ce qui concerne c.ID = p.ID, si une table a plus lignes que l'autre tableau ?? – ForeverLearning

+0

pas de problème, mais il devrait y avoir une colonne commune b/w pour faire une relation ie c.id = p.id .. only –

+0

Cela ne fonctionne pas, je reçois maintenant une exception IndexOutOfBoundsException: "Index invalide 0 , la taille est 0. " J'ai également essayé le code dans SQLite Manager. Le code ne fonctionne que sur les colonnes où les identifiants (ou un autre texte égal) pour les deux tables sont égaux. – ForeverLearning

Questions connexes