我正在开发一个小应用程序,它允许我根据某些标准跟踪我的工作重点,例如公司级别,已付款项,项目状态等。
我有一个页面,根据类别向我展示所有公司及其细分(如上所述)。
作为一个例子,为了拉出我所有的一般待办事项,我做了类似的事情:
$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与上面的查询合并的任何想法?
答案 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;“;
此致 塔伦