簡體   English   中英

過濾一對多關系的多方面

[英]Filter on the Many side of a One-To-Many Relationship

我有兩個表:jobs和job_industries(已加入jobs.id=job_industries.job_id )。 我想找到所有帶有jobs.title like '%Finance%'工作, jobs.title like '%Finance%'而沒有job_industries.industry=1

但是,當在下面運行查詢時,我會得到一份符合職稱條件且至少具有一個不是1行業選項的工作列表。

select jobs.id, title, industry
from `job_industries`
left join jobs on jobs.id=`job_industries`.job_id
where is_live=1 and jobs.`is_closed`=0 and 1 in (select industry from job_industries where job_id in )

例如,如果一個作業具有兩個job_industry關系( industry=1industry=2 ),則此作業將與查詢匹配。 我希望找到沒有的工作。

SELECT j.id, j.title, ji.industry
    FROM jobs j
        INNER JOIN job_industries ji
            ON j.id = ji.job_id
                AND ji.industry <> 1
    WHERE j.title LIKE '%Finance%'
        AND j.is_live = 1
        AND j.is_closed = 0
        AND NOT EXISTS (SELECT 1
                            FROM job_industries ji2
                            WHERE ji2.job_id = j.id
                                AND ji2.industry = 1);

或者,您可以改為執行以下操作:

SELECT j.id, j.title, ji.industry
    FROM jobs j
        INNER JOIN job_industries ji
            ON j.id = ji.job_id
                AND ji.industry <> 1
        LEFT JOIN job_industries ji2
            ON j.id = ji2.job_id
                AND ji2.industry = 1
    WHERE j.title LIKE '%Finance%'
        AND j.is_live = 1
        AND j.is_closed = 0
        AND ji2.job_id IS NULL;
select jobs.id, title, industry
from `job_industries`
left join jobs on jobs.id=`job_industries`.job_id AND job_industries.industry=1
where is_live=1 and jobs.`is_closed`=0 and job_industries.industry IS NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM