我有 3 個表:客戶、采購、產品
客戶表:
| 西德 | 客戶名稱 |
|---|---|
| 1 | 山姆 |
| 2 | 喬伊 |
采購表:
| 購買ID | 西德 | 產品編號 |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
產品表:
| 產品編號 | 產品名稱 |
|---|---|
| 1 | 果醬 |
| 2 | 面包 |
在內部加入它們后,它應該如下所示: 輸出:
| 西德 | 客戶名稱 | 產品編號 | 產品名稱 |
|---|---|---|---|
| 1 | 山姆 | 1 | 果醬 |
| 1 | 山姆 | 2 | 面包 |
| 2 | 喬伊 | 1 | 果醬 |
我嘗試了以下查詢:
SELECT C.Cid, C.ClientName, Pr.ProductID, Pr.ProductName
FROM Client C
JOIN Purchase Pu
ON C.Cid = Pu.Cid
JOIN Product Pr
ON Pu.ProductID = Pr.ProductID
即使我得到了所需的結果,某些行的所有列中也有許多重復項。前任:
| 西德 | 客戶名稱 | 產品編號 | 產品名稱 |
|---|---|---|---|
| 1 | 山姆 | 1 | 果醬 |
| 1 | 山姆 | 1 | 果醬 |
如何從結果中洗掉重復的行之一?
uj5u.com熱心網友回復:
您可以添加 group by 以獲得唯一的行。
CREATE TABLE client(
cid INT,
client_name varchar(10) );
insert into client values
(1,'SAM'),
(2,'JOE'),
(1,'SAM');
CREATE TABLE purchase (
purchase_id INT,
cid INT,
product_id int );
insert into purchase values
(1,1,1),
(2,1,2),
(3,2,1);
CREATE TABLE product (
product_id INT,
product_name varchar(10) );
insert into product values
(1,'JAM'),
(2,'BREAD'),
(1,'JAM');
SELECT C.Cid, C.client_name, Pr.product_id, Pr.product_name
FROM client C
JOIN purchase Pu ON C.cid = Pu.cid
JOIN product Pr ON Pu.product_id = Pr.product_id
group by C.Cid, C.client_name, Pr.product_id, Pr.product_name;
結果:
cid client_name product_id product_name
2 JOE 1 JAM
1 SAM 1 JAM
1 SAM 2 BREAD
我在演示中添加了一些重復值來區分。 演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/419756.html
標籤:
