【发布时间】:2018-10-08 03:24:32
【问题描述】:
我有以下 MySQL 表:
n_companies:
id 公司名称 1 公司 A 2 B公司
n_contacts:
id company_id 联系人姓名 1 1约翰 2 1 弗兰克 3 2 鲍比 4 2 苏菲
n_custom:
我正在创建一个搜索 UI,允许人们搜索任何/每个/没有记录包含字符串的位置。
这是我认为应该为之工作的查询:
查找每个联系人 (n_contacts) 都是男性的公司 (n_companies)(存储在自定义字段表 n_custom 中):
我正在寻找仅返回 Company A 的上述查询,因为它的两个联系人都是男性。 Company B有1男1女。
注意事项:
-
n_companies和c_contacts是默认创建的表 标准字段。n_custom是用户可以创建自己的地方 用于存储各种公司相关表格信息的字段。 - 我无法在 JOIN 中进行此搜索,因为可能还有另一个
OR在独立于上述查询的n_contacts上搜索。
谁能帮我解释为什么我的查询不起作用?
提前谢谢你。
编辑 我刚刚意识到我的“不”记录也不起作用。在我看来,这应该返回零行,但它不会:
选择 `n_companies`.`id`, `n_companies`.`company_name` 来自`n_companies` 左连接`n_contacts` 开(`n_contacts`.`company_id` = `n_companies`.`id`) 左连接`n_custom`作为`custom_contacts` 开(`n_contacts`.`id` = `custom_contacts`.`custom_type_id` AND `custom_contacts`.`custom_type` = 'contacts' ) 在哪里 不存在 ( 选择`id` 来自`n_custom` WHERE `n_custom`.`custom_type_id` = `n_contacts`.`id` AND `n_custom`.`custom_type` = 'contacts' AND `n_custom`.`fav_colour` NOT LIKE '%red%' ) 通过...分组 `n_companies`.`id` 订购方式 `n_companies`.`company_name` ASC【问题讨论】:
-
无余关系除法。
-
问题似乎是
%male%也包含female。 -
同意,但是如果我们把“男”改成“红”,“女”改成“绿”,还是不行。