Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 筛选一对多关系的多个方面_Mysql_Sql_One To Many - Fatal编程技术网

Mysql 筛选一对多关系的多个方面

Mysql 筛选一对多关系的多个方面,mysql,sql,one-to-many,Mysql,Sql,One To Many,我有两个表:jobs和job_industries在jobs上连接。id=job_industries.job_id。 我想找到所有有工作的工作。头衔像“%Finance%”,但没有工作的行业。行业=1 但是,当运行下面的查询时,我会得到一个与标题条件匹配的每个作业的列表,并且至少有一个行业选项不是1 e、 g.如果一个作业有两个作业\行业关系industry=1和industry=2,则此作业将匹配查询。我更喜欢找不喜欢的工作 SELECT j.id, j.title, ji.industry

我有两个表:jobs和job_industries在jobs上连接。id=job_industries.job_id。 我想找到所有有工作的工作。头衔像“%Finance%”,但没有工作的行业。行业=1

但是,当运行下面的查询时,我会得到一个与标题条件匹配的每个作业的列表,并且至少有一个行业选项不是1

e、 g.如果一个作业有两个作业\行业关系industry=1和industry=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 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