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

Requêtes MySQL Discussion :

Croisement de 2 tables avec possibilité de champs vides


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Mai 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Mai 2018
    Messages : 31
    Points : 34
    Points
    34
    Par défaut Croisement de 2 tables avec possibilité de champs vides
    Bonjour à toutes et à tous !

    Aujourd'hui je viens vous exposer un nouveau problème !
    Tout d'abord j'ai 2 tables : une table Dossier D avec une Id de Dossier, un Num Dossier...
    Une table Indicateur avec un Num Dossier et une couleur.
    La couleur étant un champ qui ne sera pas tout le temps rempli; en fait c'est un champ que l'utilisateur remplira. Il peut donc mettre "Vert" dans le champ Couleur pour le Num Dossier 1, il peut ne rien mettre dans le champ Couleur pour le Num Dossier 2, mais il met "Rouge" dans celui pour le Num Dossier 3.

    Ce que je souhaite faire est simple, mais je n'y arrive pourtant pas malgré mes recherches et tentatives !
    Je voudrais faire une requête qui me permette de croiser mes tables et donc d'obtenir dans une autre table (Dossier_avec_indicateur par exemple, elle n'est pas encore créée) et que dans cette table j'ai toutes les lignes de la table Dossier, mais que pour les lignes où le Num Dossier est = au Num Dossier de la table Indicateur, faire afficher la couleur contenue dans le champ couleur de la table Indicateur à la ligne où se trouve ledit Num Dossier.
    Pour récapituler je voudrais une table Dossier_avec_indicateur dans ce style :

    Id dossier | Num Dossier | ... | Couleur
    ___xxx___|_____1_____|_..._|__Vert__
    ___xxx___|_____2_____|_..._|
    ___xxx___|_____3_____|_..._|_Rouge_
    ___xxx___|_____4_____|_..._|
    ___xxx___|_____5_____|_..._|

    Pourquoi je ne créer pas de champ indicateur directement dans ma table dossier ? Tout simplement parce que je compte réutiliser cet indicateur dans plusieurs tables et qu'il est beaucoup plus simple pour moi d'avoir une table qui les regroupent tous et qui les redistribuent, plutôt que de devoir les ajouter dans chaque tables.

    Pour l'instant, ce que j'arrive à obtenir avec mes requêtes, ce sont uniquement les champs de la table Dossier D pour lesquels il existe un Num Dossier dans la table Indicateur qui y correspond (et donc je n'arrive à avoir que les lignes où il y a un indicateur qui est renseigné).
    Merci à tous pour vos futures réponses.

    Cordialement,
    BorisW

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 779
    Points
    30 779
    Par défaut
    As-tu essayé avec une jointure externe ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Mai 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Mai 2018
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    Bonjour, et merci !!

    Je me disais que je passais à côté de quelque chose de complètement évident...
    Ça marche nickel je te remercies pour l'indication.

    La doc est vraiment très claire, mais si jamais... Pour ceux qui auraient un problème similaire, voici ma requête pour vous en inspirer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Dossier.[Num dossier], Dossier.[Nom Défunt], Indicateurs.[Couleur]
    FROM Dossier LEFT OUTER JOIN Indicateurs ON Dossier.[Num dossier] = Indicateurs.Num_Dossier
    WHERE EXISTS(SELECT Couleur FROM Indicateurs WHERE Dossier.[Num dossier] = Indicateurs.Num_Dossier) OR Couleur IS NULL
    Encore merci Al1 !

    Cordialement,
    BorisW

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

Discussions similaires

  1. Croisement de deux tables avec SUM et sans doublon
    Par ar|equin dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/06/2007, 17h52
  2. Copie de table avec modification des champs
    Par ordipaco dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2007, 19h38
  3. Insertion,update dans une BD à table avec beaucoup de champs
    Par randriano dans le forum C++Builder
    Réponses: 29
    Dernier message: 13/03/2007, 19h11
  4. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  5. Croisement d'une table avec elle même
    Par lelapin dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/09/2005, 07h44

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