4

MSSQLServerデータベース。

私はこの単純な構造を持っています:(適切な場所にない主キーについて申し訳ありません)

ここに画像の説明を入力してください

TEACHERテーブルには、TEACHER.ID(同じテーブル)を参照する外部キー「Chief」があります。SELECTクエリを実行しているときに、整数(Teacher.ID)ではなく、チーフの名前(TEACHER.Name for Chief)を取得するにはどうすればよいですか?

これは整数(チーフのID)だけを取得します:

SELECT DEPARTMENT.Name, TEACHER.Name, TEACHER.IDCode, POST.Name, TEACHER.Tel, TEACHER.Salary, TEACHER.Rise, TEACHER.HireDate, Chief
FROM TEACHER, DEPARTMENT, POST
WHERE TEACHER.ID_Post = POST.ID AND
    TEACHER.ID_Department = DEPARTMENT.ID;
GO
4

2 に答える 2

12

JOIN次のTEACHERように、もう一度テーブルを作成します。

SELECT 
  d.Name, 
  t.Name, 
  t.IDCode, 
  p.Name, 
  t.Tel, 
  t.Salary, 
  t.Rise, 
  t.HireDate, 
  chief.Name 'Chief Name'
FROM TEACHER t 
INNER JOIN TEACHER chief ON t.Chief = chief.ID
INNER JOIN DEPARTMENT d ON t.ID_Department = d.ID
INNER JOIN POST p ON t.ID_Post = p.ID;

JOINまた、クエリで使用している古い構文の代わりに、ANS-SQL-92構文を使用してください。それらは同じですが、これが推奨される構文です。

于 2012-11-18T08:57:18.613 に答える
1

これは機能するはずです:

SELECT DEPARTMENT.Name, TEACHER.Name, TEACHER.IDCode
    , POST.Name, TEACHER.Tel, TEACHER.Salary, TEACHER.Rise, TEACHER.HireDate, c.Name as ChiefName
    FROM TEACHER
    join DEPARTMENT on TEACHER.ID_Department = DEPARTMENT.ID
    Join POST on TEACHER.ID_Post = POST.ID
    Left Join TEACHER c on c.ID=TEACHER.Chief
于 2012-11-18T08:59:15.610 に答える