显示最畅销的产品对
Displaying top-selling product pairs
我有一个问题,我花了很多时间。我必须显示出现在发票上的项目对(Item1、Item2、多少)以及重复了多少对。连接发票和货物的table称为“交易”。
我有 3 tables:
项目: IdItem,名称
交易:IdTransaction、IdInvoice、IdItem
发票: IdInvoice
SQL 查询的结果必须是:
项目 1 |项目 2 |人数
假设您的表格如下所示:
CREATE TABLE Items (
IDItem INT,
Name VARCHAR,
PRIMARY KEY(IDItem)
);
CREATE TABLE Invoices (
IDInvoice INT,
PRIMARY KEY(IDInvoice)
);
CREATE TABLE Transactions (
IDTransaction INT,
IDInvoice INT,
IDItem INT,
PRIMARY KEY(IDTransaction),
FOREIGN KEY (IDItem) REFERENCES Items(IDItem),
FOREIGN KEY (IDInvoices) REFERENCES Invoices(IDInvoices)
)
如果这是真的,那么您需要像这样查询结果:
SELECT i.Name,in.IDInvoice FROM Transactions t
JOIN Items i ON i.IDItem = t.IDItem
JOIN Invoices in ON in.IDInvoice = t.IDInvoice
WHERE i.Name = item1
这听起来像是自连接和聚合:
select t1.IdItem as IdItem1, t2.IdItem as IdItem2, count(*)
from transactions t1 join
transactions t2
on t1.IdInvoice = t2.IdInvoice and
t1.IdItem < t2.IdItem
group by t1.IdItem, t2.IdItem
order by count(*) desc;
我有一个问题,我花了很多时间。我必须显示出现在发票上的项目对(Item1、Item2、多少)以及重复了多少对。连接发票和货物的table称为“交易”。
我有 3 tables:
项目: IdItem,名称
交易:IdTransaction、IdInvoice、IdItem
发票: IdInvoice
SQL 查询的结果必须是:
项目 1 |项目 2 |人数
假设您的表格如下所示:
CREATE TABLE Items (
IDItem INT,
Name VARCHAR,
PRIMARY KEY(IDItem)
);
CREATE TABLE Invoices (
IDInvoice INT,
PRIMARY KEY(IDInvoice)
);
CREATE TABLE Transactions (
IDTransaction INT,
IDInvoice INT,
IDItem INT,
PRIMARY KEY(IDTransaction),
FOREIGN KEY (IDItem) REFERENCES Items(IDItem),
FOREIGN KEY (IDInvoices) REFERENCES Invoices(IDInvoices)
)
如果这是真的,那么您需要像这样查询结果:
SELECT i.Name,in.IDInvoice FROM Transactions t
JOIN Items i ON i.IDItem = t.IDItem
JOIN Invoices in ON in.IDInvoice = t.IDInvoice
WHERE i.Name = item1
这听起来像是自连接和聚合:
select t1.IdItem as IdItem1, t2.IdItem as IdItem2, count(*)
from transactions t1 join
transactions t2
on t1.IdInvoice = t2.IdInvoice and
t1.IdItem < t2.IdItem
group by t1.IdItem, t2.IdItem
order by count(*) desc;