SQL で 2 つの列を比較したい
oldname newname empid
j11 j12
j12 j13
j13
特定の証明書を取得した従業員のリストを取得したいと考えています。emp1 が j11 証明書を作成したが、後で証明書名が j12 に変更されたとします。その従業員はまだ認定されている必要があります。後で j12 が j13 に変更された場合でも、その従業員は認定済みと見なされます。
SQL で 2 つの列を比較したい
oldname newname empid
j11 j12
j12 j13
j13
特定の証明書を取得した従業員のリストを取得したいと考えています。emp1 が j11 証明書を作成したが、後で証明書名が j12 に変更されたとします。その従業員はまだ認定されている必要があります。後で j12 が j13 に変更された場合でも、その従業員は認定済みと見なされます。
テーブル構造は web_bod が言ったように見えるはずです。クエリは次のようになります。
SELECT employeeid, name FROM
Employees e INNER JOIN EmployeeCertificates ec ON e.id = ec.employeeId
INNER JOIN Certificates c ON c.id = ec.certificateId
WHERE Certificates.id = ?
次の 3 つのテーブルが必要です。
従業員と証明書と不変の識別子を指定すると、名前が変わっても問題になりません (これは、リレーショナル データベースを構築する際の重要な設計原則です)。