Probleme creation cles primaires

Usual suspect Messages postés 5 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 9 mars 2006 - 15 févr. 2006 à 16:49
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 17 févr. 2006 à 11:33
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 févr. 2006 à 08: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.
0
Usual suspect Messages postés 5 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 9 mars 2006
17 févr. 2006 à 11:26
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?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 févr. 2006 à 11:33
ben ouais, relance moi ici.
0
Rejoignez-nous