Maison  >  Questions et réponses  >  le corps du texte

Extraire les données de la première table, en utilisant les données de la deuxième table

Tout d'abord, je ne trouve pas de nom approprié pour la question, si quelqu'un peut trouver un meilleur nom, je lui serais très reconnaissant de le modifier. Je suis nouveau sur SQL et j'ai la question suivante : j'ai deux tables comme suit

Membre -> Nom, UID (clé primaire), SupervisorUID. WorkPlace -> WP_UID (clé primaire), Nom, SupervisorUID.

Je dois créer une requête qui renvoie les noms des membres travaillant dans WorkPlace 'X' et les noms de leurs supérieurs.

J'ai essayé d'utiliser des jointures internes mais je n'ai pas pu obtenir le résultat souhaité. La question principale est de savoir comment puis-je sélectionner par nom WorkPlace et obtenir le nom du membre et le nom du supérieur.

Supervisor est également membre, donc WorkPlace.SupervisorUID doit correspondre à Member.UID

SELECT Member.Name, Y
INNER JOIN WorkPlace on WorkPlace.SupervisorUID = Member.UID
WHERE WorkPlace.Name = 'France'

Je dois trouver quoi mettre sur Y.

Je dois trouver comment trouver l'uid qui correspond à l'uid de ce superviseur et obtenir le nom en obtenant l'uid sur le lieu de travail, puis en accédant à la table des membres.

Member
Jeremy 123 421
Jack 421 421
WorkPlace
1 France 421

Je souhaite retourner le formulaire suivant,

Jeremy Jack

P粉885035114P粉885035114406 Il y a quelques jours415

répondre à tous(1)je répondrai

  • P粉071626364

    P粉0716263642023-09-11 10:50:30

    Je pense que vous devez le faire Member中添加WP_UID作为一列。我不确定mysql的语法是否相同,但是如果你在Member中添加WP_UID, le code suivant fonctionnera dans MS SQL Server :

    SELECT M1.Name, M2.Name
      FROM Member AS M1
      INNER JOIN WorkPlace AS WP on WP.WP_UID = M1.WP_UID
      INNER JOIN Member AS M2 on M2.UID = M1.SupervisorUID
      WHERE WP.Name = 'France' AND M1.UID <> M1.SupervisorUID

    J'ai ajouté M1.UID<>M1.SupervisorUID pour que le superviseur ne soit pas affiché.

    Vous pouvez également partir de Member中删除SupervisorUID et utiliser le code suivant :

    SELECT M1.Name, M2.Name
      FROM Member AS M1
      INNER JOIN WorkPlace AS WP on WP.WP_UID = M1.WP_UID
      INNER JOIN Member AS M2 on M2.UID = WP.SupervisorUID
      WHERE WP.Name = 'France' AND M1.UID <> WP.SupervisorUID

    répondre
    0
  • Annulerrépondre