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 - 16 févr. 2006 à 12:19
Usual suspect Messages postés 5 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 9 mars 2006 - 9 mars 2006 à 08:47
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).

4 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
24 févr. 2006 à 10:16
salut,
je comprend bien ce que tu veux faire, mais je ne vois pas precisement ou tu bloque.

dis nous ce que tu as fait, et ce que tu n'arrive pas a faire precisement; on pourra surement t'aider.
0
Usual suspect Messages postés 5 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 9 mars 2006
28 févr. 2006 à 14:29
Merci pour la réponse alors voilà sur phpcs.com on m'a déjà donné ce code :

SELECT MAX(IDsouscategorie) FROM souscategories WHERE
categories.IDcategorie = souscategories.categorieID AND IDsouscategorie
BETWEEN ((categorieID * 100) AND (categorieID*100+99));

Ce code me permet de récupérer la derniere valeur de la souscategorie
en fonction de l'id de la categorie seulement je bloque sur la première
insertion dans la table et ensuite insérer le max + 1 de l'id
souscategorie.

Le code et tout mettre dans la même requete je bloque un peu.

Merci d'avance.
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
28 févr. 2006 à 17:34
ok

ce que je ferai (ca reste a tester...)

INSERT INTO sousCategories
SELECT MAX(IDSouscategorie) + 1, 'jeu de role' FROM souscategorie WHERE IDsouscategorie BETWEEN ((categorieID * 100) AND (categorieID*100+99))

ca devrait fonctionner si tu as deja des sous categories.
pour eviter le plantage tu peux utiliser la fonction de remplacement de valeur null de ton systeme de gestion de base de données.

par exemple pour SQLSERVER :

SELECT ISNULL(MAX(IDSouscategorie) + 1, IDCategorie * 100) , 'jeu de role'...

puis la fin de la requete.

essaie avec ca, si ca fonctionne pas met le message que tu as.
j'ai pas trop detaillé, alors si ya un point que tu veux que j'eclaircisse, n'hesite pas :)
0
Usual suspect Messages postés 5 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 9 mars 2006
9 mars 2006 à 08:47
Merci pour le code pas le temps de le tester pour mon application mais
je le testerai d'ici quelques semaines. Si j'ai un souci, je peux
profiter de ton savoir? Merci encore.
0
Rejoignez-nous