gpt4 book ai didi

mysql - 查询时出现重复记录问题

转载 作者:行者123 更新时间:2023-11-29 06:49:08 25 4
gpt4 key购买 nike

这是我的示例数据

-- schema
CREATE TABLE Cart (
Id_cart INT NOT NULL,
Id_product VARCHAR(25)
);

CREATE TABLE Orders (
Id INT,
Id_cart INT NOT NULL,
Id_vendor INT NOT NULL,
status VARCHAR(25),
order_no VARCHAR(25)
);

-- data
INSERT INTO Cart
(Id_cart, Id_product)
VALUES

(1, 'abc002'),
(1, 'abc003')
;
INSERT INTO Orders
(Id, Id_cart,Id_vendor,status,order_no)
VALUES
(1, 1,1, 'pending','aaa001'),
(2, 1,2, 'pending','aaa002')
;

我使用此查询来显示记录。

Select c.id_cart,order_no,id_product from cart as c
left join (SELECT id_cart,status,order_no FROM orders) o using(id_cart)

我得到的结果

id_cart     order_no    id_product
1 aaa002 abc002
1 aaa001 abc002
1 aaa002 abc003
1 aaa001 abc003

我期望的结果

id_cart     order_no    id_product
1 aaa001 abc002
1 aaa002 abc003

我的查询有问题吗?如何消除重复记录?

假设我在订单表中添加了一列vendor_id。每个order_no属于一个供应商,一个id_cart将属于多个供应商。当我尝试显示我的产品时,我想显示 order_no 和我的 id_product。

例如我有一个购物车属于两个订单

  1. 订单属于供应商 A (1),包含产品 A 和 B。
  2. 订单属于供应商 B (2),包含产品 C 和 D。

在显示期间输出应该是

order_no | product_id
order1 | A
order1 | B
order2 | C
order2 | D

现在我的问题是每个 order_no 将为每个 Product_id 循环。我该如何克服这个问题?

最佳答案

您想要显示购物车产品及其订单。购物车包含来自不同供应商的产品,这些产品存在单独的订单。因此,将产品表加入购物车以便了解供应商,然后才加入订单表。

select
id_cart,
o.order_no,
id_product
from cart c
join product p using (id_product)
join orders o using (id_cart, id_vendor);

如果您还想要尚未写入订单的购物车产品,请将订单加入外部联接。

更新:当您报告“‘from 子句’中的未知列‘id_vendor’”问题时,以下是带有 ON 子句的查询:

select
c.id_cart,
o.order_no,
c.id_product
from cart c
join product p on p.id_product = c.id_product
join orders o on o.id_cart = c.id_cart and o.id_vendor = p.id_vendor;

关于mysql - 查询时出现重复记录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48182624/

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