2014-12-04 51 views
1

我正在研究一个小应用程序,该程序允许我根据某些条件(如公司级别,付款,项目状态等)来跟踪我的工作优先级。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家公司的普通Todos,其中一家公司被称为“公司A”,那么我希望上面的查询排除公司A,从而在我的页面上显示9个条目。

我会做一些像两轮牛车 [伪代码]

<?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

,但它只是不工作,我有一个烂摊子......

编辑***

这些都是2瓦特ays按照以下答复进行了尝试,虽然我没有得到任何错误,但“公司A”仍与其余的信息一起显示。

香港专业教育学院的尝试:

$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上面我的查询存在吗?

+0

为什么向下票 – somdow 2014-12-04 20:04:39

回答

0

你可以使用不操作<>

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

这会拉低所有的出版商没有从美国。

+0

嗨安东尼。我走了进去,把它放在这样的://// $ pullAllGeneralTodosDone =“选择*从to_dos到哪里to_do_is_for ='$ login_usrname'AND is_to_do_complete ='no'AND company_to_do ='一般工作'和company_to_do < >'公司A'order by company_to_do ASC;'; \\\\并且它不起作用,我没有得到任何错误或任何东西,但公司A仍然显示任何想法?谢谢先进的 – somdow 2014-12-05 19:37:38

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;"; 

的问题是串联和括号,而且,这可能陷入下来,如果你有大的数据集或大量排除。

+0

你好。我没有得到任何错误,它仍然不起作用。这是什么我补充说。 /// $ pullAllGeneralTodosDone =“SELECT * FROM to_dos WHERE to_do_is_for ='$ login_usrname'AND is_to_do_complete ='no'AND company_to_do ='一般工作'和company_to_do不在('COMPANY A')order by company_to_do ASC;”; \\\。再一次,它没有抛出任何错误,但“公司A”仍然显示。有任何想法吗? – somdow 2014-12-05 19:26:21

+0

除了检查运算符优先级的文档(或者只是简短地尝试并尝试一些不同的括号分组),否;无论如何,不​​是没有一个样本数据集来测试。 – 2014-12-05 19:28:49

0

请试试这个:

$ pullAllGeneralTodosDone = “SELECT * FROM to_dos WHERE to_do_is_for =“” $ login_usrname。“” AND is_to_do_complete = '不',company_to_do = '一般到-DO' AND company_to_do <> '数字白板' ORDER BY company_to_do ASC;”;?

问候, 塔伦

+0

您应该使用[Markdown](http://stackoverflow.com/editing-help)来提高答案的可读性。 – 2014-12-06 13:22:02