0

親テーブルと、外部キー制約を持つ複数の子テーブルがあります。

School Table

School ID EduDetails Genders Address_id  EDUTYPE
  1        2          M         3         FGN

そして、次のような子テーブル

 Education Details
 EDU ID    EducationType
  2        Online

 AKA Name
 School Id   AKA Name
     1       Test School
     1       School Test

 Gender Table
 Gender ID   Gender Desc
      M      Male  

結果を取得するために、親と学校のテーブルに左外部結合を使用しています。

しかし、私の問題は、AKA テーブルに学校 ID に一致する 5 つのカウントがあり、Gender テーブルにその学校 ID のレコードが 1 つしかない場合です。

したがって、結果には、学校情報とその他の子テーブル情報を含む 5 つの重複行が含まれます。

この問題を解決するための回避策はありますか。関数で subquery と row_number を使用してみました。しかし、それは私にとってはうまくいきません。誰でもこの問題を解決するのを手伝ってくれますか?

この問題をご覧いただきありがとうございます。

私の必要な出力は次のようになります

 School_id AKA Name     GenderDesc EductaionType
   1       Test School    Male       Online
   1       School Test          

したがって、一致しないレコードには Null 値が必要です。

4

1 に答える 1

1

AKA Nameテーブルのすべてのレコードが必要なので、Row_Number各行のaを取得することに参加しました。次に、他のテーブルでそれを使用しRow_NumberますLEFT JOIN

SELECT S.SchoolId, 
  SA.AKAName,
  G.GenderName,
  ED.EducationType
FROM School s
  JOIN 
     (SELECT SchoolId, 
        AKAName, 
        ROW_NUMBER() OVER (PARTITION BY SchoolId ORDER BY AKAName) rn
      FROM SchoolAKA
      ) SA ON S.SchoolID = SA.SchoolId
  LEFT JOIN 
     (SELECT EDUID, 
        EducationType, 
        ROW_NUMBER() OVER (ORDER BY EducationType) rn
      FROM EduDetails
      ) ED ON S.EDUID = ED.EDUID AND SA.rn = ED.rn
  LEFT JOIN 
     (SELECT GenderId, 
        GenderName, 
        ROW_NUMBER() OVER (ORDER BY GenderName) rn
      FROM Genders
      ) G ON S.GenderId = G.GenderId AND SA.rn = G.rn

これがSQLフィドルです。

そしてここに結果があります:

SCHOOLID   AKANAME       GENDERNAME   EDUCATIONTYPE
1          School Test   Male         Online
1          Test School   (null)       (null)
于 2013-02-15T17:52:37.180 に答える