2011-10-24 3 views
1

Je dois ajouter l'article à la catégorie multiple par exemple J'ai le nom de l'article 'article de test' besoin de l'ajouter à la catégorie 1 et catégorie2 besoin de savoir comment faire la relation entre les tables pour celaun article sur la catégorie multiple

Note: dans le passé, je fais ligne de nom de la table de base de données de l'article « catégorie » et ajouter la catégorie id comme 1,2,3, mais ce problème de faire la recherche et la liste s'il vous plaît aidez-moi à ce sujet

Répondre

6

Vous avez besoin de trois tables:

  • Une table pour articles
  • Une table pour categories
  • Une table reliant des articles à des catégories, nous pourrions l'appeler categories_per_article. Cette table est souvent appelée Junction table or a Association table.

données Exemple:

ARTICLES 
ID | Name | Description 
1 | Fuzz | A fuzzy three 
2 | Bizz | A five that means bizznezz 

CATEGORIES 
ID | Name 
1 | Prime numbers 
2 | Multiples of five 
3 | Smaller than four 

CATEGORIES_PER_ARTICLE 
ID | ARTICLE_ID | CATEGORY_ID 
1 | 1   | 1 
2 | 1   | 2 
3 | 1   | 3 
4 | 2   | 1 

Vous verrez que l'article 1 (Fuzz) a trois catégories, et l'article 2 (Bizz) a seule catégorie 1. Nous appelons cela un many-to-many relationship (ou n à -n, par exemple dans ER ou UML), car l'article 1 comporte plusieurs catégories et la catégorie 1 est utilisée par plusieurs articles.

Vous pouvez faire toutes les requêtes possibles en utilisant ce schéma - n'hésitez pas à demander dans les commentaires des exemples spécifiques (comme How do I get all articles which have categories 1 and 3 but not 2).

0

Vous avez beaucoup relation-à-plusieurs ici: les articles peuvent avoir plusieurs catégories, et les catégories peuvent évidemment contenir plusieurs articles. Cela ne peut pas être représenté correctement sans au moins une autre table qui stocke explicitement les associations entre vos entités.

1

Le lien entre l'article et une catégorie est une relation n-à-n.
Un article peut appartenir à plusieurs catégories et une catégorie peut être associée à plusieurs articles.

Étant donné que SQL ne prend pas directement en charge les relations n-à-n, vous avez besoin d'une table de liens.

Table article_cats 
------------------ 
cat_id integer, 
article_id integer, 
primary key (cat_id, article_id) 

Liez ensuite les articles comme ceci:

SELECT a.name, GROUP_CONCAT(c.name) as cats 
FROM articles a 
LEFT JOIN article_cats ac ON (a.id = ac.article_id) 
LEFT JOIN cats c ON (c.id = ac.cat_id) 
GROUP BY a.id 
Questions connexes