Probleme creation cles primaires

Signaler
Messages postés
5
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
9 mars 2006
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour, comment creer une cle primaire d'une table en fonction d'un
cle primaire d'une autre table (exigence du cahier des charges)?
Exemple : table categorie (id=1 libelle=jeu, id=2 libelle=video, id=3
libelle=cd ...). Si la cle primaire 1 de la table categorie est
selectionnee, la cle primaire sous categorie commence a : id=101
libelle=aventure, id=102 libelle=jeu de role, id=103 libelle=action...;
si cle primaire 2 de la table categorie est selectionnee, la cle
primaire sous categorie commence a id=201 libelle=filme de guerre,
id=202 libelle=science fiction, id=203 libelle=dessin anime... Meme
principe qu'un hotel 1er etage les chambres commencent a 100 jusqu'a
199, 2eme etage les chambres commencent a 200 jusqu'a 299 etc...

Cote recherche j'ai une ou deux docs sur les cle generes avec une table
des cles qui recupere les dernieres valeurs des id des differentes
tables seulement les id des tables sont auto-incrementes. Si une
ou plusieurs personne peut me donner un coup de main, merci d'avance.
Euh c'est pour une base de donnees en mysql, (combinee avec du php et
apache sous linux red hat enterprise linux WS4). Poste par Usual suspect

3 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

c'est compliqué pour pas gd chose comme système...mais bon.

Les catégories sont, pour les id, en auto increment. Jusque là, c'est ok :-)

Pour les sous catégories, forcément, non. Et ça va compliquer les choses...:
tu choisis une catégorie à laquelle tu veux ajouter une sous-catégorie (select id from...blabla).
tu choisis le MAX des clefs dont l'id est compris entre id_cat + 100 et id_cat + 99 :

SELECT MAX(souscat_id) FROM souscat WHERE souscat_id BETWEEN ('.($cat_id*100).' AND '.($cat_id*100+99).')

puis tu insères ta nouvelle sous-catégorie avec l'id récupéré + 1.

Si tu as une version récente de mysql, tu peux combiner ça pour réduire le nombre de requêtes, avec les sous-requêtes.
Messages postés
5
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
9 mars 2006

Merci, beaucoup je suis en train de tester ce code. Ce système sera
destiné à une recherche de documents dans une base de donnees. Les
utilisateurs peuvent rechercher avec l'id (repère facile il save ou
chercher le document plus simplement vu que la première partie de l'id
correspond a la categorie et le reste à la sous categorie). Euh si j'ai
un souci je peux te recontacter?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
ben ouais, relance moi ici.