5

データベースには、ユーザー、ジョブ、資格、ジョブ資格、ユーザー資格の 5 つのテーブルがあります。

特定の仕事を遂行する資格のあるすべてのスタッフを選択する必要があります。ALL IN などのステートメントがあれば便利です。たとえば、クエリは次のようになります。

SELECT user_id
FROM users_qualification
WHERE qualification_id ALL IN 
    (
        SELECT qualification_id 
        FROM job_qualifications 
        WHERE jobs_id = 1
    )
4

2 に答える 2

6

仕事に必要な資格の数がわかっている場合は、次のクエリを記述できます。

SELECT uq.user_id
FROM users_qualification uq JOIN job_qualifications jq
    ON uq.qualification_id = jq.qualification_id
WHERE jq.jobs_id = 1
GROUP BY uq.user_id
HAVING COUNT(*) = {# of qualifications}

資格の数を確認するには、次を実行します。

SELECT COUNT(*)
FROM job_qualifications
WHERE jq.jobs_id = 1
于 2012-06-10T19:27:13.687 に答える
2

スクラム マイスターの回答を拡張すると、次のようなことができます。

SELECT
    distinct uq.user_id
FROM
    users_qualification uq
    JOIN job_qualifications jq ON uq.qualification_id = jq.qualification_id
WHERE
    jq.jobs_id = 1
GROUP
    BY uq.user_id
HAVING
    COUNT(*) = (SELECT COUNT(*) FROM job_qualifications jq2 WHERE jq2.job_id = jq.job_id)
于 2012-06-10T19:31:32.447 に答える