0

SELECT現在、を使用して 3 つのテーブルからステートメントを作成しようとしていJOINます。しかし、selectステートメントで3つのテーブルから必要な値を出力できないようです

これは私のテーブルを構成するものの例です:

申請者テーブル
APPNUM APPNAME


A0001 デリック・タン
A0002 ユージーン・ロー
A0003 サミュエル・リム
A0004 アン・チャン
A0005 ジョーダン・ウィー
A0006 リンダ・コー
A0007 ヴェロニカ・リム
A0008 ジュナイダ・バテ・イスマイル
A0009 ジーン・タン
A0010 ルペシュ
・サブラマニアム A0011 ムハンマド・ファリド

スキル保有表
SKILLPOSAP SKILLPOSSKILL


A0001 SK001
A0001 SK003 A0001 SK005 A0001 SK006
A0001 SK201
A0001
SK301
A0002
SK107
A0002 SK108
A0002 SK202

スキルが必要なテーブル
SKILLNEEDE SKILLNEEDEDSKILL


P0001 SK001
P0001 SK005
P0001 SK006
P0001 SK201
P0001 SK301

ご覧のとおり、Skillneeded の skillneededposnum 値に基づいて、Applicant から appnum と appname の値を取得する必要があります。つまり、Skillneeded から Skillpossessed から Applicant へのリンクです。を使用しJOINて appnum n 個の appnames を取得できますが、値が重複しています!

これは Select ステートメントです。

SELECT APPNUM,APPNAME
FROM APPLICANT A
LEFT JOIN SKILLPOSSESSED B
ON A.APPNUM = B.SKILLPOSAPPNUM
LEFT JOIN SKILLNEEDED C
ON B.SKILLPOSSKILL = C.SKILLNEEDEDSKILL
WHERE C.SKILLNEEDEDPOSNUM = 'P0001';

これは結果の例です:

APPNUM APPNAME


A0001 デリック・タン
A0001 デリック・タン
A0001 デリック・タン
A0001 デリック・タン
A0001 デリック・タン
A0003 サミュエル・リム
A0003 サミュエル・リム
A0003 サミュエル・リム
A0004 アン・チャン
A0004 アン・チャン
A0005 ジョーダン・ウィー

表示される結果は、 の SINGLE ROW のみである必要がありA0001 Derrick Tanます。

編集: プロセスは、skillneeded から skillprocessed から申請者までです。「P0001」は、skillneeded テーブルから 5 つの「SK---」データを取得します。そこから、5 つの 'SK---' データは、skillprocessed テーブルから 'A0001' を取得します。最後に「A0001」は、申請者テーブルから名前を取得します。

これを実現するには、既存の sql ステートメントをどのように変更すればよいですか? または、を使用する以外にこれを行うためのより良い方法はありJOINますか?

すべての助けに感謝します!

4

1 に答える 1