gpt4 book ai didi

mysql - 仅在先购买另一种产品后才获取该产品?

转载 作者:行者123 更新时间:2023-11-29 07:57:52 25 4
gpt4 key购买 nike

我正在查看this example of joining multiple tables这让我想知道,例如,在购买鼠标之前购买键盘时,您将如何从客户表中选择名称?

我正在尝试类似的方法,但没有成功。

SELECT 
product_name, customer.name, date_of_sale
FROM sales, product, customer
WHERE
STR_TO_DATE(
(
SELECT date_of_sale
FROM sales
WHERE product_id = 2
),
STR_TO_DATE('2012-12-23 18:00:00')

>

STR_TO_DATE(
(
SELECT date_of_sale
FROM sales
WHERE product_id = 3
),
STR_TO_DATE('2012-12-23 18:00:00')

最佳答案

我可以想到两种方法来做到这一点。

方法一是使用一元连接(SalesSales,然后到 Customers)。

方法二是在 View (或临时表)中group_concat加入到客户

SQLFiddle:http://sqlfiddle.com/#!2/9a031/22

一元连接

出于提供信息的原因,我包含了所有列。

SELECT c.name,
s1.product_id AS product1,
s1.date_of_sale AS date1,
s2.product_id AS product2,
s2.date_of_sale AS date2
FROM sales s1,
sales s2,
customers c
WHERE s1.date_of_sale < s2.date_of_sale
AND s1.customer_id = s2.customer_id AND
c.customer_id = s1.customer_id and
s1.product_id = 3 AND s2.product_id = 2;

临时表中的Group_concat

SELECT name
FROM customers,
(SELECT customer_id,
group_concat(PRODUCT_ID
ORDER BY date_of_sale)
FROM sales
GROUP BY customer_id HAVING group_concat(PRODUCT_ID
ORDER BY date_of_sale) LIKE '%3,2%') sales_order
WHERE customers.customer_id = sales_order.customer_id;

优点/缺点

分组连接:

  • PRO:group_concat 方法支持类似的行中的多个值,例如喜欢“%3,2,10%”
  • 缺点:对于较小的产品表,速度较慢并且使用临时内存表。

加入:

  • PRO:数据量较小时速度更快。
  • CON:需要在联接中为 +1 个产品添加 +1 个销售表。
  • 缺点:数据量越大,速度可能会越慢

关于mysql - 仅在先购买另一种产品后才获取该产品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24639106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com