gpt4 book ai didi

php - 提取唯一订单

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:24 24 4
gpt4 key购买 nike

请帮助我编写一个 SQL 查询以从下表中提取唯一订单。为此,我准备了一个 SQL 查询。它工作正常,但在某些地方它返回一些重复的行,因为一些订单有多个产品。

例如:

客户可以一次购买“IPAD”。但是,如果他们捆绑购买“Ipad”和“Android”,他们将获得 50% 的折扣,可以省钱。在这种情况下,我们将在 1 个订单下获得两种产品。但是,客户将作为一种产品付款(即 120 美元)。为了正确分配订单,我们为额外的产品(如果有两个产品)创建了一个额外的行。如果 bundle 包含三个产品,它将在“product_orders”表中分别创建三行。

多个产品的示例“product_orders”表:

id orders_id product_id qty
1 3 2 1
2 2 1 1
3 3 3 1

请查看上面的示例表,捆绑订单的一个 order_id 复制了两次。如果我们能够提取一个订单信息,我们将获得整个捆绑信息。所以,我们不需要额外的行。

我应用的查询:

Select 
orders.id,
orders.order_price,
orders.purchase_date,
customers.email,
product_orders.qty,
products.name
from
orders
INNER JOIN product_orders on orders.id=product_orders.orders_id
INNER JOIN products on product_orders.product_id=products._id
INNER JOIN customers on orders.customer_id =customers.id

上述查询结果:**

Id  order_price  purchase_date      email        qty         name 
3 20 12/6/2011 aa@gmail.com 1 Ipad

3 20 12/6/2011 aa@gmail.com 1 Android
1 40 10/5/2011 bb@gmail.com 2 Laser hair remover

要求的结果:

删除重复的订单ID

Id  order_price  purchase_date      email        qty         name 
3 20 12/6/2011 aa@gmail.com 1 Ipad


1 40 10/5/2011 bb@gmail.com 2 Laser hair remover

表 1:订单

id  customer_id order_price purchase_date
1 1 0.20 12/6/2011
2 2 0.20 12/6/2011
3 1 0.20 12/6/2011
4 1 0.20 12/6/2011
5 1 0.20 12/7/2011
6 3 199.00 12/7/2011
7 4 199.00 12/7/2011
8 5 199.00 12/7/2011
9 6 199.00 12/7/2011
10 7 199.00 12/7/2011

表 2:客户

id  email                   name
1 aa@dealboard.com.au aa
2 bb@dealboard.com.au bb
3 cc@live.com.au cc
4 dd@acgglobal.com dd
5 ee.heinrich@det.nsw.edu.au ee
6 ff@optusnet.com.au ff
7 ssy@hotmail.com ss

表 3:产品

id  name
1 A Home Portable Laser Hair Remover
2 Ipad
3 android
4 Asus
5 s
6 10 inch Android
7 A Fabric Steamer Cleaner
8 A Magnetic Fly Screen Door
9 pillopw
10 LCD

表 4:product_orders

id orders_id product_id qty
1 1 1 1
2 3 3 1
3 3 4 1
4 4 1 1
5 4 2 1
6 6 1 1
7 7 1 1
8 4 2 1
9 4 3 1
10 10 1 1

请帮我从“product_orders”表中只提取 1 个订单,查询将忽略其他额外的行

最佳答案

添加额外的子查询,每个order_id只获取一个产品

Select 
orders.id,
orders.order_price,
orders.purchase_date,
customers.email,
product_orders.qty,
products.name
from
orders
INNER JOIN product_orders on orders.id=product_orders.orders_id
INNER JOIN
(
SELECT orders_id, MIN(Product_ID) prodID
FROM product_orders
GROUP BY orders_id
) c ON product_orders.orders_ID = c.orders_id AND
product_orders.Product_ID = c.prodID
INNER JOIN products on product_orders.product_id=products.id
INNER JOIN customers on orders.customer_id =customers.id

SQLFiddle Demo

关于php - 提取唯一订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12910885/

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