我有分别建了两个完全不同的系统的两个表。我有另一个表,代表客户在一个表中的记录(称为“潜在客户”),并记录(称为“经理”)是完全一样的客户,但“经理”使用不同的领域

(例如,“引线”包含电子邮件地址,和“经理”包含用于两种不同的电子邮件两个字段 - 其中的任一个可能是电子邮件从“引线”)。

因此,我已经创建了包含lead_id和MANAGER_ID的相关表。目前该相关表是空的。

我想查询“引线”表给我记录了那场比赛无论是“经理”的电子邮件跟单“引线”的电子邮件场场,而同时忽略了已经被添加到域“相关”表。 (这样我可以看到有多少线索,比赛还没有相关的。)下面是我的电流,无效的SQL尝试:

SELECT leads.id, manager.id
  FROM leads, manager
  LEFT OUTER JOIN correlation ON correlation.lead_id = leads.id
  WHERE correlation.id IS NULL
  AND leads.project != "someproject"
  AND (manager.orig_email = leads.email OR manager.dest_email = leads.email)
  AND leads.created BETWEEN '1999-01-01 00:00:00' AND '2010-05-10 23:59:59'
  ORDER BY leads.created ASC;

我得到的错误:未知列“leads.id”在“上条款”

您想知道之前:有在“引线”表中的记录,其中leads.project =“someproject”和leads.created那些日期间瀑布!我已经完整包含这些额外的参数。

有帮助吗?

解决方案

您有表中列出的南辕北辙所以LEFT OUTER JOIN加盟managercorrelation而不是leadscorrelation,你打算。尝试轮交换它们:

SELECT leads.id, manager.id
  FROM manager, leads
  LEFT OUTER JOIN correlation ON correlation.lead_id = leads.id
  WHERE correlation.id IS NULL
  AND leads.project != "someproject"
  AND (manager.orig_email = leads.email OR manager.dest_email = leads.email)
  AND leads.created BETWEEN '1999-01-01 00:00:00' AND '2010-05-10 23:59:59'
  ORDER BY leads.created ASC;

在一般我会建议不要混合新旧风格的加入,以避免正是这种类型的错误。我更愿意看到这样的内容:

SELECT leads.id, manager.id
  FROM leads
  LEFT OUTER JOIN correlation ON correlation.lead_id = leads.id
  JOIN manager ON manager.orig_email = leads.email OR manager.dest_email = leads.email
  WHERE correlation.id IS NULL
  AND leads.project != "someproject"
  AND leads.created BETWEEN '1999-01-01 00:00:00' AND '2010-05-10 23:59:59'
  ORDER BY leads.created ASC;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top