1. 程式人生 > >sql中的笛卡爾積

sql中的笛卡爾積

簡單的 有序 想要 所有 rod car strong 多表 笛卡爾

sql中的笛卡爾積

我們對數據庫表進行操作時,經常會對多張表進行關聯,多表連接查詢大家肯定不會陌生,但是一不小心很容易出來龐大冗余的數據。

笛卡爾積數學概念

笛卡爾積是指在數學中,兩個集合X和Y的笛卡尓積(Cartesian product),又稱直積,表示為X × Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員。

笛卡爾積又叫笛卡爾乘積,是一個叫笛卡爾的人提出來的。 簡單的說就是兩個集合相乘的結果。

假設集合A={a, b},集合B={0, 1, 2},則兩個集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

解決辦法

這樣冗余的數據可不是我們想要,所以想要你的結果避免笛卡爾積,既要做到以下幾點:

1.關聯範圍在最小粒度的列。

2.如果是三張表連接,並且是1:n:n的關系,就要先關聯兩張表,然後將兩張表關聯的結果與第三表在進行關聯,這樣就可以取得我們想要的結果啦!多張表同理!

參考:https://blog.csdn.net/weienjun/article/details/80869478

sql中的笛卡爾積