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

Android Discussion :

query multi table


Sujet :

Android

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2011
    Messages
    64
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 64
    Par défaut query multi table
    Bonjour tout le monde

    Je viens vers vous car je suis confronté a un problème.
    J'utilise dans mon application plusieurs base de données.
    Je les ai donc initilisée ...
    Je fais mes requete de la manière classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Cursor c = bddA.query(TABLE_A, 
    				null, 
    				requete, 
    				null, 
    				null,
    				null,
    				null;
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String query = "SELECT * FROM TABLE_A WHERE " +	requete;
    Cursor c = bddA.rawQuery(query, null);
    Jusque là, pas de soucis.
    Les problèmes viennent quand je veux faire une jointure

    Je suis donc tenté de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String query = "SELECT * FROM TABLE_A INNER JOIN TABLE_B WHERE " + requete;
    Cursor c = bddA.rawQuery(query, null);
    Mais j'ai une erreur de ce genre
    android.database.sqlite.SQLiteException: no such table:TABLE_B
    La table TABLE_A est directement liée à bddA car je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bddA = new DatabaseVinsManagement(context, "TABLE_A", null, 1).getReadableDatabase();
    Je pense donc que si j'ai cette erreur, c'est parce que j'ai pas ouvert en lecture la TABLE_B. Mais, je vois pas comment faire pour faire une requête sur TABLE_A tout en utilisant TABLE_B
    Bref, je suis un peu perdu
    Si quelqu'un pouvait m'expliquer

    Cordialement

  2. #2
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 141
    Par défaut
    Vu l'erreur on dirait que tu n'as pas créé la table TABLE_B.

    T'as essayé de créer un autre Cursor juste pour vérifier que TABLE_B fonctionne correctement ?

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2011
    Messages
    64
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 64
    Par défaut
    C'est justement là que je ne comprend pas, car chacune de mes tables existe bel et bien.
    Je fais des requêtes sur TABLE_A ou TABLE_B indépendamment l'une de l'autre sans le moindre soucis.
    Le problème vient lorsque je souhaite utiliser les deux en même temps (avec le JOIN par exemple)

    Est ce qu'il faut que je fasse du getReadableDatabase() sur les deux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bddA = new DatabaseVinsManagement(context, "TABLE_A", null, 1).getReadableDatabase();
    bddB = new DatabaseVinsManagement(context, "TABLE_B", null, 1).getReadableDatabase();
    Et, si oui, sur quel objet dois-je faire mon requete ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bddA.rawQuery(query, null);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bddB.rawQuery(query, null);
    ???

    Ou alors, j'ai mal compris un truc ???
    Puis-je ouvrir deux tables simultanément avec un même objet de type SQLiteDatabase ?

    Cordialement

  4. #4
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 141
    Par défaut
    Dessine voir ta base de données avec MySQL Workbench.

    Tu veux lier quoi et quoi exactement ?
    Essaie un Left Join :
    http://www.w3schools.com/sql/sql_join_left.asp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT column_name(s)
    FROM table_name1
    LEFT JOIN table_name2
    ON table_name1.column_name=table_name2.column_name
    Enfin ça c'est si t'as l'id d'une entrée d'une table dans une autre table.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Par défaut hello
    salut,
    a premier vue tu a juste oublier le on

    t'on query :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String query = "SELECT * FROM TABLE_A INNER JOIN TABLE_B WHERE " + requete;
    avec le on :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String query = "SELECT * FROM TABLE_A 
    INNER JOIN TABLE_B 
    ON TABLE_A.column_name=TABLE_B.column_name
    WHERE " + requete;
    je pense !! a tester

  6. #6
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Oui, à vu d'oeil, tu as fait un mix entre l'ancienne syntaxe SQL et la nouvelle. Les différentes jointures (basées sur mot clé JOIN) nécessitent le mot clé ON. Le mot clé WHERE ne sert alors que pour le filtrage (alors qu'avant il servait aussi pour les jointures).
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2012, 11h47
  2. Création d'un état multi-tables
    Par rossy dans le forum Access
    Réponses: 1
    Dernier message: 21/10/2005, 14h40
  3. requete multi table - multi champ
    Par Jean-Matt dans le forum Oracle
    Réponses: 6
    Dernier message: 14/10/2005, 17h18
  4. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04
  5. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34

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