2009-06-05 7 views
1

Je voudrais avoir une colonne dans ma table qui peut stocker une quantité variable de valeurs int. Quelle est la meilleure façon de procéder? Je voudrais être en mesure de sélectionner en fonction de ces ints donc une liste de csv ne fonctionnerait pas.Comment insérer plusieurs valeurs dans une seule colonne à l'aide de sqlite?

Fondamentalement, j'ai un tas de lignes dans ma table qui peuvent appartenir à plusieurs catégories différentes. Je voudrais stocker les identifiants de catégorie dans ma table et être en mesure de sélectionner des lignes en fonction des catégories auxquelles ils appartiennent. Je crois que cela s'appelle une relation de plusieurs à plusieurs. J'utilise sqlite.

Répondre

6

Vous aurez besoin d'une table intermédiaire, où chaque ligne est un article et une catégorie.

 
ItemID   Category 
111    1 
111    2 
222    1 
222    2 
222    3 
333    3 

Pour sélectionner tous les éléments en fonction d'une catégorie (par exemple la catégorie 2), vous pouvez faire la requête suivante

SELECT * FROM Items AS I INNER JOIN ItemsInCategories AS N ON N.ItemID = I.ItemID WHERE N.Category = 2 

Et cela retournerait

 
ItemID 
111 
222 
4

A plusieurs à plusieurs devrait être accompli en utilisant une table de mappage. Non par le piratage d'un type de colonne à plusieurs valeurs

Par exemple, ce BlogPost < -> échantillon Catégorie:

Blog 
    Id 
    Title 
    Content 

Category 
    Id 
    Title 

Blog_Category 
    BlogId 
    CategoryId 

Cela signifie que lorsque BlogPost avec Id 12, fait partie de la catégorie 3,5 et 10, Blog_Category contient ces lignes:

12, 3 
12, 5 
12, 10 
Questions connexes