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

Langage SQL Discussion :

Système de prérequis


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Système de prérequis
    Bonjour tout le monde.

    Les explications sont un peu longues mais ça reste somme toute assez simple. J'ai juste essayé de détailler. Voila mon problème :

    J'ai deux tables, une appellée Construction et une autre Element.

    La table Construction contient un id et une clef externe vers Element.
    La table Element contient un id, un champ prerequis et une description.

    Ce qui donne :

    Construction
    -------
    id int
    typeid int

    et

    Element
    -------
    id int
    prerequis int
    description varchar

    Le truc se situe au niveau du champ prerequis, ce champ permet de définir quel id de la table Element est prérequis pour cette ligne là (= à 0 si pas de prérequis).
    Par exemple :

    id prerequis description
    1 0 pneus
    2 1 roues
    3 2 voiture

    Donc dans ma table Element, j'ai des pneus qui ne demandent pas de prérequis et des roues qui demande des pneus comme prérequis (et une voiture des roues).

    Maintenant dans ma table Construction, je définis quels éléments j'ai à ma disposition, sachant que je dois aller dans l'ordre des prérequis.

    Admettons :

    id typeid
    1 1
    2 2

    J'ai donc actuellement des pneus et des roues.

    Mes questions :

    Quelle requête me permet d'avoir la liste des éléments que je n'ai pas encore mais dont j'ai les prérequis ?

    Une requête comme

    SELECT Element.description
    FROM Construction INNER JOIN
    Element ON Construction.typeid = Element .prerequis

    Me donne 'roues' et 'voiture', mais j'ai déjà les roues. Je voudrais juste savoir quel élément il me reste à faire. :p

    Tous mes remerciements à ceux qui pourront m'aider.

    P.S. : je travaille avec mySQL (si ça change quelque chose pour ça mais j'en doute)

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    salut essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Element.[description] 
    FROM Construction INNER JOIN 
    Element ON Construction.typeid = Element .prerequis 
    and Element.Id not in (Select TypeId from Construction)

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Gozmoth
    P.S. : je travaille avec mySQL (si ça change quelque chose pour ça mais j'en doute)
    Non seulement c'est important, mais nous avons même besoin de la version pour te répondre (v < 4.1, pas de requêtes imbriquées)...

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Toutes mes excuses.

    MySQL 4.0.18

    Donc pas de requêtes imbriquées effectivement.

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT e.description
    FROM Construction c INNER JOIN Element e      ON c.typeid = e.prerequis 
                        LEFT JOIN Construction c2 ON e.id = c2.typeid
    WHERE c2.typeid IS NULL

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ca marche ! Merci beaucoup !

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

Discussions similaires

  1. [tables systèmes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 23/03/2006, 13h24
  2. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03
  3. [Système] Vider le Presse Papier
    Par babe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/09/2002, 17h46
  4. IA avec le système de note
    Par scorpiwolf dans le forum C
    Réponses: 4
    Dernier message: 06/05/2002, 12h13

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