这是我的样本数据
-- 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
我的问题有问题吗?如何消除重复记录?
假设我在orders表中添加了一列vendor\u id。每个订单不属于一个供应商,一个id车将属于多个供应商。当我试图显示我的产品时,我想显示订单号和我的id产品。
e、 我有一辆属于两个订单的手推车
订单属于供应商a(1),由产品a和b组成。
订单属于供应商b(2),由产品c和d组成。
在显示过程中,输出应
order_no | product_id
order1 | A
order1 | B
order2 | C
order2 | D
现在我的问题是每一个订单号都会针对每一个产品id进行循环。我如何克服这个问题?
2条答案
按热度按时间0s0u357o1#
简单地将分组依据添加到sql查询中
示例:-http://sqlfiddle.com/#!9/b6b118/6/0号
carvr3hs2#
您希望显示购物车产品及其订单。手推车包含来自不同供应商的产品,这些供应商有单独的订单。因此,将product表连接到cart以便了解供应商,然后才连接order表。
如果您还想要尚未写入订单的购物车产品,请使订单加入外部联接。
更新:当您报告“from子句”中的“unknown column'id\u vendor”出现问题时,以下是对on子句的查询: