sql - 从表值等于某事物的结果集中排除结果

时间:2014-12-04 19:41:00

标签: php sql

我正在开发一个小应用程序,它允许我根据某些标准跟踪我的工作重点,例如公司级别,已付款项,项目状态等。

我有一个页面,根据类别向我展示所有公司及其细分(如上所述)。

作为一个例子,为了拉出我所有的一般待办事项,我做了类似的事情:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'COMPANY NAME HERE' ORDER BY company_to_do ASC;";

有了上述内容,假设我对数据库中的10家公司有一个普通的待办事项,那么这就完全拉了十个。

现在我想做的是,除了现在,我想要排除包含特定公司名称的任何返回值。

因此,例如,如果我有10家公司的一般待机,其中一家公司被称为"公司A",那么我希望上面的查询排除公司A,导致显示的9个条目我的页面。

我打算做一些hackery [伪代码]

<?php

if ( $row['company_to_do'] == 'COMPANY A' ) { 

?>

code here with some css class that gets hidden because its COMPANY A which i dont want to see.

<?php } ?>

但这太乱了...... 我知道它可以在sql中完成,我一直在环顾四周,发现NOT IN和NOT EXIST

但它不起作用,我弄得一团糟......

EDIT ***

这些是我尝试过的两种方式,根据下面的回复,尽管我没有收到任何错误,但&#34;公司A&#34;仍然显示其他信息。

我试过了:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'GENERAL TO-DO' AND  company_to_do <> 'COMPANY A' ORDER BY company_to_do ASC;”;

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'GENERAL TO-DO' AND  company_to_do NOT IN ('COMPANY A') ORDER BY company_to_do ASC;”;

关于如何将NOT IN / NOT EXIST与上面的查询合并的任何想法?

3 个答案:

答案 0 :(得分:0)

您可以使用is not operator <>

SELECT pub_name,country,pub_city,estd   
FROM publisher   
WHERE country <>"USA";  

这将吸引所有不是来自美国的出版商。

答案 1 :(得分:0)

如果你想要简洁,我很确定不是你的答案。但是,这些值必须连接起来并放在括号中:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for
= '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do 
= 'COMPANY NAME HERE' AND  company_to_do NOT IN 
('COMPANY A','FOOBAR WIDGETS, LLC','MICROSOFT CORPORATION') 
ORDER BY company_to_do ASC;";

问题在于连接和parens,如果你有大量的数据集或大量的排除,这可能会使事情陷入困境。

答案 2 :(得分:0)

请试试这个:

$ pullAllGeneralTodosDone =“SELECT * FROM to_dos WHERE to_do_is_for ='”。$ login_usrname。“'AND AND_to_do_complete ='no'AND company_to_do ='GENERAL TO-DO'AND company_to_do&lt;&gt;'DIGITAL WHITE BOARD'ORDER BY company_to_do ASC;“;

此致 塔伦