2016-04-10 10 views
0

第3回で接続された2つのテーブルから選択します(ので、各スキルには、多くの仕事を持っています)。は、MySQLが</p> <pre><code>jobs id, name --- skills id, name --- job_skill id, job_id, skill_id </code></pre> <p>各ジョブには、多くのスキルを持っている私は、第三のテーブルに接続されている2つのテーブルを持っている(mysqlは加入)

質問: 私は尋ねたnスキルを持っている場合は、どのように私はこれらのスキルを持っているジョブを選択することができますか?例えば

私はCSSJSPHPスキルを持って仕事を見つけたいです。

答えて

1

あなたは3があなたのnは、このようなものを使用することができ、すべての3つのスキルを持っているジョブのみを取得したいとスキルは、INリスト

SELECT COUNT(j.id) as skillcount,j.id,j.name 
FROM skills s 
INNER JOIN job_skill js ON s.id = js.skill_id 
INNER JOIN jobs j ON js.job_id = j.id 
WHERE s.name IN ('CSS','JS','PHP') 
GROUP BY j.id,j.name 
HAVING COUNT(j.id) = 3 

sqlfiddle

+0

それは正しいです、ありがとう! – MurDaD

0

ここにサンプルがあります。すべてのフィールドを選択しましたが、表示したいフィールドに変更できます。

SELECT 
    s.*, 
    js.*, 
    j.* 
FROM skills s 
LEFT JOIN job_skill js ON s.id = jb.skill_id 
LEFT JOIN jobs j ON j.id = jb.job_id 
WHERE s.name IN ('skill1','skill2','skill3'); 
+1

"である場合jb 'は' js 'でなければならないと思います。' LEFT '=' LEFT JOIN '? – MurDaD

+0

@ MurDa - はい - 私は答えに正しい答えを持っています –

関連する問題

 関連する問題