mysql - 如何找到客户加入多个表格时订购和点击的类别?
问题描述
我有以下 5 个表格,我试图找到从他们点击的同一类别中订购的客户。条件是订单日期应大于点击日期
表:客户
email cid
a@gmail.com 1001
b@gmail.com 1002
c@gmail.com 1003
表:订单
cid pid order_date
1001 4000 Aug-1-2021
1002 5000 Aug-1-2021
1003 4000 Aug-1-2021
表:点击次数
cid pid click_date
1001 4000 Jul-1-2021
1002 8000 Jul-1-2021
1003 8000 Jul-1-2021
表:产品
pid category_id
4000 1
8000 2
5000 2
表:昏暗
categorty_id category
1 Games
2 Books
3 Music
预期成绩
email cid category_clicked category_ordered
a@gmail.com 1001 games games
b@gmail.com 1002 books books
c@gmail 将被排除在外,因为他订购的类别与他点击的类别不同。我无法了解如何根据类别获取数据。如果客户购买了他们点击的相同商品,我只能编写查询来获取。任何帮助表示赞赏。这是我必须准确找到客户点击并购买了相同 pid 的查询。
select distinct cust.email
From customers cust
Join orders o
on cust.cid=o.cid
join clicks c
on c.cid=o.cid and c.pid=o.pid
Join product prod
ON c.pid=prod.pid
inner join dim dim
on dim.category_id=prod.category_id
where o.order_date>=c.click_date
解决方案
为此,您必须加入 2 个product
.
第一个副本用于从 中获取类别,orders
第二个用于从 中获取类别clicks
,以便可以比较它们:
SELECT c.email, c.cid,
d.category category_clicked,
d.category category_ordered
FROM customers c
INNER JOIN orders o ON o.cid = c.cid
INNER JOIN product po ON po.pid = o.pid
INNER JOIN clicks cl ON cl.cid = c.cid
INNER JOIN product pc ON pc.pid = cl.pid
INNER JOIN dim d ON d.category_id = po.category_id AND d.category_id = pc.category_id
WHERE cl.click_date <= o.order_date;
请参阅演示。
推荐阅读
- typescript - 如何在 ts-node 项目中扩展 express Request 类型?
- conditional - 使用嵌入式条件运行 cloud-init
- gitlab - GitLab - 参考文件行/行范围与问题片段
- javascript - 键盘与下拉列表中的数字交互
- sql - 加入和排序后可以分组吗?
- javascript - 仅当 columnwidth < maxInt 时,如何自动调整 Kendo TreeList 中的第一列?
- c++ - googletest:如何从内部方法中跳过测试
- java - 在 java 特殊用例中的迭代期间添加项目
- mysql - 在本地导出整个数据库的最快方法是什么?
- javascript - 对象本地化 - Google Vision API