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 :

Extraire l'info organization via une jointure [MySQL-8.0]


Sujet :

Requêtes MySQL

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut Extraire l'info organization via une jointure
    Bonjour,

    je tourne en rond depuis ce matin sans trouver

    J'ai une requête SQL qui doit me retourner l'organisation d'un utilisateur :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  USR.US_SESA AS CUSTOMER,
      OZ.OZ_organization
      FROM ti_ticket AS TI
      INNER JOIN US_user AS USR ON USR.US_ident = TI.US_ident_rq
      INNER JOIN OZ_organization AS OZ ON OZ.OZ_ident = USR.OZ_ident
      WHERE TI.TI_num_ticket='INC000007495668'
    La réponse est vide alors que non, si je commente les parties qui concernent cette information :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  USR.US_SESA AS CUSTOMER
      #,  OZ.OZ_organization
      FROM ti_ticket AS TI
      INNER JOIN US_user AS USR ON USR.US_ident = TI.US_ident_rq
      #INNER JOIN OZ_organization AS OZ ON OZ.OZ_ident = USR.OZ_ident
      WHERE TI.TI_num_ticket='INC000007495668'

    Voici la structure des tables concernées :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    CREATE TABLE OZ_organization(
       OZ_ident INT UNSIGNED AUTO_INCREMENT,
       OZ_organization VARCHAR(30),
       PRIMARY KEY(OZ_ident)
    );
     
    CREATE TABLE US_user(
       US_ident INT UNSIGNED AUTO_INCREMENT,
       US_sesa INT,
       US_firstname VARCHAR(50),
       US_lastname VARCHAR(50),
       OZ_ident INT UNSIGNED,
       COU_ident INT UNSIGNED,
       PRIMARY KEY(US_ident),
       UNIQUE(US_sesa),
       FOREIGN KEY(OZ_ident) REFERENCES OZ_organization(OZ_ident),
       FOREIGN KEY(COU_ident) REFERENCES COU_country(COU_ident)
    );
     
    CREATE TABLE TI_ticket(
       TI_ident INT UNSIGNED AUTO_INCREMENT,
       TI_num_ticket VARCHAR(30) NOT NULL,
       TI_submitted_date DATE NOT NULL,
       TI_last_resolved_date DATE,
       TI_summary TEXT NOT NULL,
       TI_priority CHAR(6) NOT NULL,
       TI_status CHAR(13) NOT NULL,
       TI_type_incident CHAR(10) NOT NULL,
       TI_source CHAR(12) NOT NULL,
       TI_first_country VARCHAR(30) NOT NULL,
       US_ident_rq INT UNSIGNED NOT NULL,
       US_ident_sub INT UNSIGNED NOT NULL,
       AP_ident INT UNSIGNED NOT NULL,
       AG_ident INT UNSIGNED NOT NULL,
       PRIMARY KEY(TI_ident),
       UNIQUE(TI_num_ticket),
       FOREIGN KEY(US_ident_rq) REFERENCES US_user(US_ident),
       FOREIGN KEY(US_ident_sub) REFERENCES US_user(US_ident),
       FOREIGN KEY(AP_ident) REFERENCES AP_application(AP_ident),
       FOREIGN KEY(AG_ident) REFERENCES AG_assigned_group(AG_ident)
    );

    Comment extraire cette information, SVP ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour,
    Si j'ai tout compris, un LEFT JOIN devrait répondre à la question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  USR.US_SESA AS CUSTOMER,
      OZ.OZ_organization
      FROM ti_ticket AS TI
      INNER JOIN US_user AS USR ON USR.US_ident = TI.US_ident_rq
      LEFT JOIN OZ_organization AS OZ ON OZ.OZ_ident = USR.OZ_ident
      WHERE TI.TI_num_ticket='INC000007495668'
    Laurent
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Merci pour la réponse. J'ai mis un certain temps à répondre car en testant ta réponse, j'ai mis le doigt sur un autre bug que j'ai corrigé. Dis-moi si je me trompe. Les jointures, ça fait pas très longtemps que je les utilise et jusque là, je m'étais limité aux jointures internes.
    L'intérêt que je vois aux jointures externes, comme avec un LEFT JOIN, c'est de retourner un résultat en remplissant les colonnes avec NULL, si aucune correspondance est trouvée. On est d'accord ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    C'est ça effectivement
    Le indique que l'on sélectionne les champs de A et aussi ceux de B par cette jointure s'ils existent ou PAS, autrement dit : toutes les lignes de A ressortiront avec ou sans correspondance dans B.
    Dans le cas ou la correspondance entre une ligne de A avec B n'existe pas, les valeurs de B seront effectivement à NULL.

    Note1 :
    <=>
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Merci vttman-Laurent
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Accès infos d'une table via une autre
    Par Invité dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2008, 21h36
  2. [RSS] extraire des infos d'une balise: possible?
    Par csseur22 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 14/10/2006, 17h08
  3. Afficher mes infos systeme via une page Web ?
    Par byloute dans le forum Linux
    Réponses: 4
    Dernier message: 17/08/2006, 10h36
  4. Réponses: 4
    Dernier message: 11/05/2006, 14h41
  5. Réponses: 3
    Dernier message: 27/04/2006, 14h23

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