【问题标题】:Combining three SQL queries into one将三个 SQL 查询合二为一
【发布时间】:2022-01-18 13:27:46
【问题描述】:

我从三个查询中获得了工作代码,但我想将它们组合成一两个。基本上,我正在检查提供的电话号码是否存在于表格联系人或潜在客户中,以及它是否作为辅助号码存在于 customfieldsvalues 中(但并非所有潜在客户都有自定义字段值)。我正在使用基于 CodeIgniter 的 CRM 系统。

我想做什么(不正确/假设的查询):

SELECT * FROM contacts OR leads WHERE phonenumber = replace(X, '-', '')
OR leads.id = customvaluefields.relid AND cfields.fieldid = 41 AND cfields.value = X

表格

table : contacts
+-------+----------------+----------------+
|   id  |   firstname    |  phonenumber   |
+-------+----------------+----------------+
|   1   |      John      |   214-444-1234 |
|   2   |      Mary      |   555-111-1234 |
+-------+----------------+----------------+

table : leads
+-------+-----------+---------------------+
|   id  |   name    |     phonenumber     |
+-------+-----------+---------------------+
|   1   |   John    |   214-444-1234      |
|   2   |   Mary    |   555-111-1234      |
+-------+-----------+---------------------+

table : customvaluefields
+-------+-----------+-------------+-----------+
|   id  |   relid   |   fieldid   |   value   |
+-------+-----------+-------------+-----------+
|   1   |     1     |     41      | 222333444 |
|   2   |     1     |     20      | Management|
|   3   |     2     |     41      | 333444555 |
+-------+-----------+-------------+-----------+

【问题讨论】:

标签: mysql sql codeigniter


【解决方案1】:

如果我理解您的意图,也许 UNION ALL 会起作用。这是让您入门的东西:

SELECT C.ID, C.FirstName, C.Phonenumber 
FROM Contacts C 
JOIN CustomValueField CVF 
ON c.ID = CVF.RelID AND 
    CVF.ID = 41
    AND REPLACE(Phonenumber,'-','') = cvf.Value 
UNION ALL 
    SELECT L.ID, L.FirstName, L.Phonenumber 
FROM Leads L
JOIN CustomValueField CVF 
ON L.ID = CVF.RelID AND 
    CVF.ID = 41
    AND REPLACE(Phonenumber,'-','') = cvf.Value 

我在每个查询中将联系人和潜在客户表加入到 CustomeValueField,然后将它们与每个查询中的 WHERE 子句一起联合起来。我确信它不是 100% 正确满足您的需求,但应该让您找到解决方案。这里有更多信息:https://dev.mysql.com/doc/refman/8.0/en/union.html

【讨论】:

  • 谢谢,我能够使用 UNION 语法的两种用法将其减少为一个查询。
猜你喜欢
  • 2016-11-18
  • 2023-03-21
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多