我正在做一个搜索,试图寻找具有指定公司名称和职位的联系人作为WHERE参数。有时候不会与指定职位和公司有任何联系。当我使用公司名称集时,我怎样才能找出哪些结果未找到?这实在是很难解释......如何查找在SQL中找不到哪些数据记录?
一个例子SQL语句可能是
SELECT *
FROM contacts
WHERE company_name IN ('bbc', 'yahoo', 'some company')
AND contact_position
LIKE 'manager'
我想知道哪些公司没有为这个头衔有任何接触,如果是有道理的?
我到目前为止做出这一点,但我相信有这样做的更好的方法:
$contacts_no_inv = Contact::find_query("
SELECT *
FROM contacts
WHERE {$data_search}
AND contact_position
LIKE '%{$_POST['job_title']}%'
");
if ($contacts_no_inv) {
foreach ($contacts_no_inv as $contact_no_inv) {
$companies_found[] = $contact_no_inv->company_name;
if (!in_array($contact_no_inv->contact_id, $idArr)) {
$filtered_no_inv[] = $contact_no_inv;
}
}
}
$companies_found = array_unique($companies_found);
$companies_found = array_filter($companies_found);
foreach ($_POST['query'] as $query) {
if (!in_array(strtolower($query), array_map('strtolower', $companies_found))) {
if (count(explode(' ', strtolower($query))) > 1) {
foreach (explode(' ', $query) as $query_element) {
if (!in_array(strtolower($query_element), array_map('strtolower', $companies_found))) {
$companies_found[] = $query;
}
}
}
$companies_not_found[] = $query;
}
}
这可以完全用你的SQL语句完成,没有所有额外的PHP代码(更不用说它会更快!)。发布您的表格结构将帮助我们帮助您编写查询来完成您的任务。 – mituw16