1. 程式人生 > >《資料庫技巧》資料庫兩個表求笛卡爾積(階乘)

《資料庫技巧》資料庫兩個表求笛卡爾積(階乘)

最近遇到了一個需求:使用者在客戶端頁面上進行資料錄入,下拉列表的選擇,然後使用者對頁面資料進行提交。後臺要根據客戶端傳來的資料進行分析,並且生成一串數字,將該數字串進行儲存。

介紹之前,我們要了解本文的一個名詞【笛卡爾積】,同俗的來講,就是數學中的排列組合。

  • 如果還是不理解,就更直觀的描述下。我們頁面有兩個下拉列表,每個列表有兩個選項,使用者的選擇是隨機的。因此正常情況下這兩個列表的笛卡爾積就是2*2=4,那麼我們就需要建立第三個表,將所有可能產生的資料都儲存到這個表中。下面是這個例子;

這裡寫圖片描述

這裡寫圖片描述

  • 我們可以看到兩個下拉列表的笛卡爾積是A1 A2 B1 B2這四種情況。

那麼。我門就用sql將資料庫的這兩個下拉列表進行笛卡爾積:

SELECT * FROM 表1 CROSS JOIN 表2;

  • 這裡要特表說明的是。我們上面的sql的意思是:將兩個表進行笛卡爾積,但是實際開發中,所有的下拉列表(資料字典)都存在一張表裡面,並且列表項也不可能只有2個選項,因此建議大家從新建表,將每個下拉列表單獨建立為一張表,然後在進行笛卡爾積就好。

如果各位還是有疑問,歡迎留言