仅当表 B 中的条目等于表 C 中的条目时才将表 B 连接到表 A

Ben

我有3张桌子。客户、销售和potential_sales。
基本结构如下:

客户表:
+-----------+-------+----------------+ | client_id | name | address | +-----------+-------+----------------+ | 1 | john | 12 blue ave | | 2 | paul | 34 green lane | | 3 | peter | 69 yellow road | +-----------+-------+----------------+

潜在销售表:
+----------+------------+---------------------+ |product_id | client_id | received_free_promo | +-----------+------------+---------------------+ | 3 | 1 | 1 | | 4 | 2 | 0 | | 5 | 2 | 1 | +-----------+------------+---------------------+

销售量:
+----------+-----------+-----------+ | sales_id | client_id | product_id | +----------+-----------+------------+ | 1 | 2 | 4 | | 2 | 43 | 4 | | 3 | 2 | 5 | | 4 | 18 | 93 | +----------+-----------+------------+

我想加入客户和潜在销售表,仅当
1)收到
的促销等于 1 和2)他们实际购买了促销包(即潜在销售的 product_id 有一个进入销售表的条目)。如果他们最终没有购买 free_promo 产品,那么我根本不想加入 clients 和 potential_sales 表。这很重要 - 我不能简单JOIN地弄清楚,因为这只是更大查询的一小部分,我不能无缘无故地加入。

(这是我希望它的工作方式。主要是描述我想要发生的事情的伪代码) SELECT c.* FROM clients c LEFT JOIN potential_sales ps ON ps.client_id=c.id LEFT JOIN sales ps ON s.product_id=ps.product_id IF(s.sales_id) JOIN potential_sales ps ON ps.client_id=c.id

我如何在 MySQL 中执行此操作?我还没有接近解决方案。请帮忙!

大加

试试这个:

SELECT A.*, B.product_id, B.received_free_promo
FROM Clients A JOIN 
    (SELECT * FROM PotentialSales 
     WHERE received_free_promo=1) B
ON A.client_id=B.client_id
WHERE EXISTS (SELECT 1 FROM Sales C
                 WHERE A.client_id=C.client_id 
                      AND B.product_id=C.product_id);

请参阅SQL Fiddle 上的演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

多次将表 A 连接到表 B

会议室DB使用@Relation将表A连接到表B,将表B连接到C

仅当表 B 中不存在特定值时才从表 A 中获取值

存在三个表A,B和C,其中我需要根据B中存在的公式将C中的值添加或连接到A中

我的SQL表中有3列[A,B,C]。我想查找表条目,其中A中的值相同,B中的值相同,但C不同

SQL逻辑:在A.FID = B.ID上将子表B连接到父表A时

从表A中获取表b中没有外键条目的所有元素

SQL 將表 A 列 A 連接到表 B 列 A 或 B

将数据插入表C中。如果与表A比较时数据不在表B中?

在表A上插入后触发将表C中的值插入表B中

连接三个表A,B,C,并在mysql中返回A的公共表

当表 C 中只有共享数据时,如何从表 B 更新表 A?

SAS/SQL - 从表 B 中获取大于或等于日期字段的日期字段表 A,并从表 B 中获取最大日期

仅使用 R 中表 A 中的列合并表 A 和 B

使用条件将表A和表B中的记录插入表C的SQL语句

如何建立从表 A 到表 C 的关系,其中 A 与 B 相关,B 与 LARAVEL 中的 C 相关

从工作表A复制并粘贴到工作表B(仅值)

sql:检查表B中是否存在表A中的条目

从表A中查找未包含在表B中的元素,二者均由表C连接

如何使用表 B 和表 C 的连接返回的按日期计数更新表 A 中的按日期计数

如何向 json{b}_build_object 添加 N 个条目,其中 N 是表中的行数?

Power BI-通过表A的第1列中的条目重命名表B

如何使表b的列仅对表a中的不同外键条目唯一

当C没有A的键时,如何从表A和C中获取值,以及如何将表B与表B的默认值连接在一起

如何查询表A,将仅来自B引用的B *和* C字段联接在一起?

在小于或等于表 A 中日期的表 b 的最大日期连接两个表

连接相同列的熊猫数据框,仅获取表B中没有的项

选择表A中的记录,而*仅*表B中的某些相应记录

从表A中仅选择日期比表B中的实际日期更近的预测数据