2011-09-02 6 views
0

amis,SQLite comment comparer deux colonnes

Je suis en train de faire un projet Android dans mon entreprise, encore quelques petits travaux restant, j'ai besoin de votre aide pour compléter la tâche.

Le problème est ...

J'ai créé deux tables où, table1 a une colonne vide, à des fins pour le nom d'économie ...

Le table2 a un list of names, l'objectif est seulement les noms de cette liste devraient être sauvegardés dans la colonne vide de la table1, à ceci près qu'ils ne devraient accepter aucun des noms tapés manuellement.

+0

question assez floue, plz élaborer ..... – Richa

+0

dans la colonne table2, une liste de noms avait été stockée, l'objectif est que la table1 devrait permettre de stocker les noms de table2. – SHIV

+0

vous voulez dire que vous voulez copier les recods de la colonne ur table dans une autre table? – Richa

Répondre

0

J'espère que la requête ci-dessous fonctionnera pour vous.

insert into table1(name) values (select name from table2 where id=?).

Merci.

1

Vous semblez vouloir faire de la liste de noms une validation: si l'utilisateur souhaite enregistrer un nom dans table1, le nom doit déjà exister dans table2.

Typiquement, cela serait fait comme dans l'exemple suivant, dans lequel seuls les produits énumérés à PRIZEPRODUCTS peuvent être entrées dans la table des LAUREATS: quelqu'un ne pouvait pas gagner un bateau, par exemple, compte tenu des données ci-dessous:

  PRIZEPRODUCTS 
      id 
      productname 

      1|TV 
      2|iPad 
      3|backpack 



      PRIZEWINNERS 
      id 
      productid 
      winner 


      ALTER TABLE PRIZEWINNERS 
      ADD CONSTRAINT PRIZEWINNERS_PRIZEPRODUCTS_FK 
      FOREIGN KEY(productid) REFERENCES PRIZEPRODUCTS(id) 

SQLite ne crée pas la clé étrangère à l'aide de ALTER TABLE mais dans le cadre de l'instruction create-table. Voir here pour la syntaxe. Pour activer la prise en charge des clés étrangères dans Android (2.2), voir here.

Maintenant, vous pouvez établir la clé étrangère dans la colonne [productname] si [productname] était la clé de PRIZEPRODUCTS. En d'autres termes, vous pourriez faire de nom-personne la clé de la table plutôt que d'avoir un PersonID. Mais si ce nom est modifié dans la table de validation, il peut rompre la relation de clé étrangère, sauf si ON UPDATE CASCADE est activé, mais je ne suis pas sûr que cela soit pris en charge par Android.