我正在开发一个小应用程序,它允许我根据某些标准(例如公司级别,支付的金额,项目状态等(跟踪我的工作优先级。
我有一个页面,根据类别向我显示所有公司及其细分(如上所述(。
举个例子,为了拉出我所有的常规待办事项,我做了这样的事情:
$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 家公司。
现在我想做的是,提取相同的数据,除了现在,我想排除返回的任何包含特定公司名称的值。
因此,例如,如果我有 10 家公司的一般待办事项,其中一家公司称为"公司 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 中完成,我一直在环顾四周,发现不在,也不存在
但它就是不行,我一团糟...
编辑***
这是我根据以下回复尝试的两种方法,尽管我没有收到任何错误,但"公司 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;”;
关于如何将"不在/不存在"与上面的查询合并的任何想法?
>您可以使用 is not 运算符<>
SELECT pub_name,country,pub_city,estd
FROM publisher
WHERE country <>"USA";
这将吸引所有非美国的出版商。
如果你想要简洁,我很确定不是IN是你的答案。 但是,这些值必须连接并放在括号中:
$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;";
问题是串联和参数,而且如果您有大型数据集或大量排除项,这可能会使事情陷入困境。
请尝试以下操作:
$pullAllGeneralTodosDone = "从to_dos中选择 *,其中 to_do_is_for = '".$login_usrname。is_to_do_complete='否',company_to_do='一般待办事项',company_to_do <>按ASC company_to_do顺序排列'数字白板';";
问候塔伦