IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

MySQL gestion & multi-table 2 le retour !


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 20
    Par défaut MySQL gestion & multi-table 2 le retour !
    Salut à tous !

    Je vais reprendre mon analogie avec les voitures.
    Le but c'est pouvoir rechercher des voitures selon leurs caractéristiques et d'afficher le tout.

    Ma BDD actuelle:

    table "voiture" champs:
    ->id
    ->marque_id
    ->couleur_id
    ->plaque_immatriculation
    ->pneu_id
    etc..

    puis:

    table "marques" champs:
    ->id
    ->nom
    table "couleur" champs:
    ->id
    ->nom
    etc..

    mais j'ai un problème, les pneus peuvent avoir des motif dessus: rond, carré, triangle, etc..

    je fais donc:

    table "motif" champs:

    ->id
    ->nom
    puis:
    table "pneu" champs:
    ->id
    ->nom
    ->motif_id

    La requête: (enfin p'tète bien)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM voiture
    JOIN couleur ON couleur.id = voiture.couleur_id
    JOIN pneu ON pneu.id = voiture.pneu_id
    JOIN motif ON motif.id = pneu.motif_id
    WHERE couleur = 'vert' AND pneu = 'michelin' AND motif = 'losange'
    ou

    table "voiture" champs:
    ...
    ->motif_pneu_id

    La requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM voiture
    JOIN couleur ON couleur.id = voiture.couleur_id
    JOIN pneu ON pneu.id = voiture.pneu_id
    JOIN motif ON motif.id = voiture.motif_pneu_id
    WHERE couleur = 'vert' AND pneu = 'michelin' AND motif = 'losange'
    Quel est la meilleure façon de faire? Et pourquoi?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    C'est un problème de conception, plutôt qu'un problème propre à MySQL.
    Il y a un forum spécialisé peut-être plus approprié pour obtenir une réponse correcte .

    Quoi qu'il en soit, je pense que le motif d'un pneu est fonction du pneu (en tout cas de sa marque) et pas de la marque de la voiture... 2 voitures peuvent avoir le même modèle de pneu, auquel cas le motif du pneu sera le même.

    Donc, c'est la première solution qui semble la plus logique .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 20
    Par défaut
    Je continuerai a poster ici parce que je suis pas sur des requêtes.

    J'arrive pas à piger correctement comment fonctionnent les jointures, pourquoi ils ont pas inventé un genre de système comme en POO...
    voiture->pneu->motif

    J'arrive pas à suivre la logique MySQL.

    Merci encore ced !

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    C'est parce que c'est une logique différente. Il s'agit plutôt d'une logique ensembliste...
    En fait, ce n'est pas tant MySQL que le SQL...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. MySQL gestion & multi-tables
    Par Belenos dans le forum MySQL
    Réponses: 2
    Dernier message: 06/07/2009, 13h50
  2. [PDO] Requêtes MySQL multi-tables ?
    Par nabab dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/08/2007, 19h40
  3. [MySQL 3.23.58] delete multi-tables
    Par GLDavid dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/08/2006, 11h45
  4. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo