Mysql : Table listant d'autres tables

Résolu
Blanc57 Messages postés 369 Date d'inscription   Statut Membre Dernière intervention   -  
Blanc57 Messages postés 369 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,


Je ne connais pas grand chose en bases de données et je suis sur un petit projet de développement d'appli web J2EE/Struts2 avec une base de donnée Mysql.

Je souhaite savoir s'il est possible de créer une table permettant de lister/indexer d'autres tables.
Exemple :

Table "liste_table" :

id | Marque | modele | table
-------------------------------------------
1 | Peugeot | 206 | tab_peugeot_206
2 | Citroen | C3 | tab_citroen_c3
etc...

Table "tab_peugeot_206" :

id | piece | prix
-------------------------
1 | essuie-glace | 20€
2 | pare-brise | 50€
etc...

et je souhaiterais pouvoir faire :

select * from (select table from liste_table where marque='peugeot' and modele='206')


J'ai essayé comme dans l'exemple ci-dessus mais cela ne marche pas ainsi.
Est-ce possible ? Si oui, comment dois-je m'y prendre ?
Et sinon, comment organise-t-on une base dans pareil cas ? Est-on obliger de lister toutes les pièces détachées, de tous les modèles dans une table puis de faire une recherche dans la table "pièces détachées" en fonction du modèle de voiture ?
J'aurais aimé avoir une table distincte par modèle de voiture mais il me faut un moyen de retrouver la table correspondant à chaque modèle (je pourrais le faire par J2EE mais je préfererais que cela soit fait avec MySQL)

Merci d'avance pour votre aide.

1 réponse

A.Nonymous
 
La syntaxe "SELECT * FROM ( SELECT table FROM ... ) res" ne donnera pas le résultat souhaité ici.

Et au vu du problème, ce n'est probablement la bonne manière de s'y prendre.

A moins qu'une partie de ton problème m'ait échappé, je te suggère de faire ainsi:
- 1 table "voiture", avec clé primaire "id_voiture"
- 1 table "piece_detachee", avec clé primaire "id_piece_detachee"
- 1 Table de liaison N-N, "voiture_piece_detachee", contenant les champs "id_voiture" et "id_piece_detachee"

Pour obtenir les pièces détachées d'une voiture:
SELECT piece_detachee.* FROM voiture
INNER JOIN voiture_piece_detachee ON voiture.id_voiture = voiture_piece_detachee.id_voiture
INNER JOIN piece_detachee ON piece_detachee.id_piece_detachee = voiture_piece_detachee.id_piece_detachee
WHERE
voiture.id_voiture = 10

Les noms de tables et de champs sont des exemples et peuvent être bien sûr adaptés ;)
0
Blanc57 Messages postés 369 Date d'inscription   Statut Membre Dernière intervention   73
 
Merci pour votre aide.
J'avais utilisé cette méthode jusque là pour mes essais, avec tables séparées et je pense donc que je vais continuer comme cela...
Merci encore.
0