Heim  >  Fragen und Antworten  >  Hauptteil

Extrahieren Sie Daten aus der ersten Tabelle und verwenden Sie dabei Daten aus der zweiten Tabelle

Zuallererst kann ich keinen passenden Namen für die Frage finden. Wenn jemand einen besseren Namen finden kann, wäre ich sehr dankbar, wenn er ihn bearbeiten würde. Ich bin SQL-Neuling und habe folgende Frage: Ich habe zwei Tabellen wie folgt

Mitglied -> Name, UID (Primärschlüssel), SupervisorUID. WorkPlace -> WP_UID (Primärschlüssel), Name, SupervisorUID.

Ich muss eine Abfrage erstellen, die die Namen der in WorkPlace „X“ arbeitenden Mitglieder und die Namen ihrer Vorgesetzten zurückgibt.

Ich habe versucht, Inner Joins zu verwenden, konnte aber nicht das gewünschte Ergebnis erzielen. Die Hauptfrage ist, wie kann ich nach WorkPlace-Namen auswählen und den Namen des Mitglieds und des Vorgesetzten erhalten?

Supervisor ist auch Mitglied, daher sollte WorkPlace.SupervisorUID mit Member.UID übereinstimmen

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

Ich muss herausfinden, was ich auf Y anziehen kann.

Ich muss herausfinden, wie ich die UID finde, die mit der UID dieses Vorgesetzten übereinstimmt, und den Namen erhalte, indem ich die UID vom Arbeitsplatz erhalte und dann in die Mitgliedertabelle gehe.

Member
Jeremy 123 421
Jack 421 421
WorkPlace
1 France 421

Ich möchte das folgende Formular zurücksenden,

Jeremy Jack

P粉885035114P粉885035114406 Tage vor418

Antworte allen(1)Ich werde antworten

  • P粉071626364

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

    我认为你需要在Member中添加WP_UID作为一列。我不确定mysql的语法是否相同,但是如果你在Member中添加WP_UID,以下代码在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

    我添加了M1.UID<>M1.SupervisorUID以便不显示主管。

    你也可以从Member中删除SupervisorUID并使用以下代码:

    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

    Antwort
    0
  • StornierenAntwort