0

请参阅下面的查询我想要所有状态为 using 或 offer 且 userid 不等于 1 且 coursecode 为 cs3333 的记录

SELECT c.`id` AS courseid,
    c.`userid` AS userid,
    c.`coursecode`,
    m.`title`,
    s.`sem_name`,
    p.`professor`,
    st.`status`,
    a.`author_name`,
    q.`quality`,
    m.`comments`,
    m.`price`,
    m.`material`
FROM sc_courses c
    JOIN sc_c_materials m
    ON c.`id`=m.`courseid`

    JOIN sc_semesters s
    ON s.`id`=c.`semid`

    JOIN sc_professors p
    ON c.`profid`=p.`id`

    JOIN sc_status st
    ON c.`statusid`=st.`id`

    LEFT JOIN sc_authors a
    ON m.`authorid`=a.`id`

    JOIN sc_quality q
    ON m.`qualityid`=q.`id`
WHERE st.`status` = "offering" OR st.`status` = "using"  AND c.`userid` != "1" AND c.`coursecode` = "CS3333";

查询正在运行,但它忽略了 和 运算符上面的查询返回所有用户 ID 为 1 且课程代码不等于 cs3333 的记录,但我不想要这些记录请告诉我我在做什么错????

4

3 回答 3

1

你只需要括号

WHERE (st.`status` = "offering" OR st.`status` = "using")  AND c.`userid` != "1" AND c.`coursecode` = "CS3333";
于 2013-08-22T10:06:01.873 回答
1

那是因为优先。您应该( .. )更改比较顺序。

(st.`status` = "offering" OR st.`status` = "using")  
AND c.`userid` != "1" 
AND c.`coursecode` = "CS3333"
于 2013-08-22T10:06:31.707 回答
0

opss 愚蠢的错误在这里它正在处理这个查询

SELECT c.`id` AS courseid,
    c.`userid` AS userid,
    c.`coursecode`,
    m.`title`,
    s.`sem_name`,
    p.`professor`,
    st.`status`,
    a.`author_name`,
    q.`quality`,
    m.`comments`,
    m.`price`,
    m.`material`
FROM sc_courses c
    JOIN sc_c_materials m
    ON c.`id`=m.`courseid`

    JOIN sc_semesters s
    ON s.`id`=c.`semid`

    JOIN sc_professors p
    ON c.`profid`=p.`id`

    JOIN sc_status st
    ON c.`statusid`=st.`id`

    LEFT JOIN sc_authors a
    ON m.`authorid`=a.`id`

    JOIN sc_quality q
    ON m.`qualityid`=q.`id`
WHERE c.`userid` != "1" AND c.`coursecode` = "CS3333" AND st.`status` = "offering" OR 
    c.`userid` != "1" AND c.`coursecode` = "CS3333" AND st.`status` = "using";
于 2013-08-22T10:07:39.303 回答