1. 程式人生 > >關於笛卡爾積陷阱的實例

關於笛卡爾積陷阱的實例

實例 我們 進行 select distinct values reat ont 卡爾

下面的代碼演示了笛卡爾積陷阱的相關實例。

/*當我們采用以下語句進行查詢的時候,得到的結果遠超過我們需要的量。*/
select a.userID,B.username,A.value,A.month from
cartTableA A, cartTableB B
where A.userID = B.userID

/*甚至我們采用以下的語句的時候,也仍然得不到我們想要的結果。*/
select a.userID,B.username,A.value,A.month from
cartTableA A, cartTableB B
where A.userID = B.userID and A.month = B.month

/*只有采用以下語句才能得到我們想要查看的正確結果*/

select distinct a.userID,B.username,A.value,A.month from
cartTableA A, cartTableB B
where A.userID = B.userID and A.month = B.month


drop table if exists Jinhua_Electric.cartTableA ;

create table Jinhua_Electric.cartTableA(
userID char(10),
month char(10),
value decimal(8,2),
DT char(8)
);

INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180901‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180902‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180903‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180904‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180905‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180906‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180907‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180908‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180909‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180910‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180911‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180912‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180913‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201808‘, 12.333 ,‘20180914‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180901‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180902‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180903‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180904‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180905‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180906‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180907‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180908‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180909‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180910‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180911‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180912‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180913‘);
INSERT INTO Jinhua_Electric.cartTableA(userID, month, value,DT) VALUES(‘S1001‘,‘201807‘, 52.222 ,‘20180914‘);

drop table if exists Jinhua_Electric.cartTableB;
create table Jinhua_Electric.cartTableB(
userID char(10),
username char(10),
month char(10)
);

INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1001‘,‘A1‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1002‘,‘A2‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1003‘,‘A3‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1004‘,‘A4‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1005‘,‘A5‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1006‘,‘A6‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1007‘,‘A7‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1008‘,‘A8‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1009‘,‘A9‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1010‘,‘A10‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1011‘,‘A11‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1012‘,‘A12‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1013‘,‘A13‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1014‘,‘A14‘,‘201808‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1001‘,‘A1‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1002‘,‘A2‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1003‘,‘A3‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1004‘,‘A4‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1005‘,‘A5‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1006‘,‘A6‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1007‘,‘A7‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1008‘,‘A8‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1009‘,‘A9‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1010‘,‘A10‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1011‘,‘A11‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1012‘,‘A12‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1013‘,‘A13‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1014‘,‘A14‘,‘201807‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1001‘,‘A1‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1002‘,‘A2‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1003‘,‘A3‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1004‘,‘A4‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1005‘,‘A5‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1006‘,‘A6‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1007‘,‘A7‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1008‘,‘A8‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1009‘,‘A9‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1010‘,‘A10‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1011‘,‘A11‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1012‘,‘A12‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1013‘,‘A13‘,‘201806‘);
INSERT INTO Jinhua_Electric.cartTableB(userID, username,month) VALUES(‘S1014‘,‘A14‘,‘201806‘);

關於笛卡爾積陷阱的實例