Heim > Fragen und Antworten > Hauptteil
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粉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