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 :

Créer une vue avec des conditions


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut Créer une vue avec des conditions
    Bonjour,

    j'ai deux tables liées en père-fils (la clé d'une table est en FK dans l'autre table), je veut créer une vue qui m'affiche les champs des deux tables à la fois,

    le problème est que je pourais avoir une clé dans la première table qui ne correspend pas à une clé dans la deuxième table,

    donc, la vue m'affiche juste les données qu'en retrouve dans la jointure

    est ce qu'il y'a moyen de mettre une condition à la création de la vue qui lui demande d'initialiser les champs de la deuxième table a des valeurs par défaut et d'afficher les valeurs de la première table ?

    merci a tout ceux qui veulent aider
    amine
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Si tu veux toutes les lignes de la table A même s'il n'y a pas de correspondance dans la table B, utilise une jointure externe.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Si tu veux toutes les lignes de la table A même s'il n'y a pas de correspondance dans la table B, utilise une jointure externe.
    Merci CinePhil, j'ai enfin pu résoudre le problème de mes tables en père fils avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select a.col1, COALESCE(b.col2, 'valeur de remplacement')
    from tablea a left outer join tableb b on a.cle=b.cle
    j'ai donc trouvé par le biais d'une recherche personnelle la fonction COALESCE() pour remplacer les null par des valeurs par défaut;


    malgré ça, je ne peut pas mettre le sujet en résolu car ca ne donne pas un bon résultat quand je l'applique sur trois tables liés par des clés,
    pour être claire, j'ai par exemple trois tables (chauffeur, conduit, voiture)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chauffeur(id_ch, nom_ch, prenom_ch)
    conduit(id_ch, id_v)
    voiture(id_v, marque_v)
    comment faire pour avoir une vue qui m'englobe tout les chauffeurs et toutes les voitures (même les chauffeurs qui n'ont pas encore conduit et les voitures qui n'ont pas encore étés conduites) ?

    merci encore a tout ceux qui veulent aider
    amine
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  4. #4
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    Bonsoir,
    j'ai enfin trouvé le résultat,
    la meilleur solution était d'utiliser FULL OUTER JOIN,
    malheureusement MySQL ne l'interprète pas encore,
    mais pour contourner ce prblème il suffit d'utiliser l'union comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT * FROM t1
    LEFT JOIN t2 ON t1.id = t2.id
    LEFT JOIN t3 ON t2.id = t3.id
    UNION
    SELECT * FROM t1
    RIGHT JOIN t2 ON t1.id = t2.id
    LEFT JOIN t3 ON t2.id = t3.id
    UNION
    SELECT * FROM t1
    RIGHT JOIN t2 ON t1.id = t2.id
    RIGHT JOIN t3 ON t2.id = t3.id
    merci encore et j'espère que ca va aider d'autres développeurs
    amine
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Ceci ne fonctionnerait-il pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ch.id_ch, ch.nom_ch, ch.prenom_ch,
    	v.id_v, v.marque_v
    FROM conduit cd
    RIGHT OUTER JOIN chauffeur ch ON ch.id_ch = cd.id_ch
    RIGHT OUTER JOIN voiture v ON v.id_v = cd.id_v
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [2000] Créer une Vue avec condition
    Par jobe3141 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/04/2013, 09h35
  2. Comment créer une vue avec des paramètres (objets) ?
    Par Ryu2000 dans le forum Eclipse Platform
    Réponses: 25
    Dernier message: 12/12/2012, 13h11
  3. Réponses: 5
    Dernier message: 07/12/2012, 18h57
  4. Créer une vue avec des onglets
    Par Flackou dans le forum MFC
    Réponses: 2
    Dernier message: 14/06/2007, 11h43
  5. Créer une vue avec des requêtes UNION ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/04/2005, 12h37

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