比如有以下數(shù)據(jù)表結(jié)構(gòu)
id lei shuxing miaoshu
1 大象 眼睛 大大的
2 大象 眼睛 圓圓的
3 大象 鼻子 高高的
4 熊 鼻子 小小的
5 大象 腿 長(zhǎng)長(zhǎng)的
6 熊 腿 細(xì)細(xì)的
7 大象 嘴 小小的
第二列和第三列和第四列都可能有n多種情況,求一個(gè)能實(shí)現(xiàn)出以下要求組合的php方法,要求是每個(gè)描述是一個(gè)lei,涵蓋shuxing中的3項(xiàng)(不夠三項(xiàng)有幾個(gè)算幾個(gè)比如熊),以生成對(duì)某個(gè)動(dòng)物的不同描述
舉例說(shuō)明:按以上數(shù)據(jù)的結(jié)果應(yīng)該是
大象 眼睛大大的,鼻子高高的,腿長(zhǎng)長(zhǎng)的
大象 眼睛圓圓的,鼻子高高的,腿長(zhǎng)長(zhǎng)的
大象 眼睛大大的,鼻子高高的,嘴小小的
。。。
由于能組合出不少,就沒(méi)法一一列出了,通過(guò)以上的例子希望朋友們能理解
擁有18年軟件開(kāi)發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級(jí)軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...
其實(shí)還是沒(méi)太看懂題主到底是問(wèn)php問(wèn)題還是sql問(wèn)題。不過(guò)感覺(jué)sql并不擅長(zhǎng)解決這類(lèi)問(wèn)題,那我就假設(shè)是編程問(wèn)題吧。
由于不懂php,所以?xún)H提供解題思路:1、根據(jù)lei查詢(xún)所有符合條件的數(shù)據(jù),例如:
SELECT?lei,?shuxing,?miaoshu?FROM?animal WHERE?lei?IN?('大象',?'熊');
2、在代碼里先后對(duì)lei屬性和shuxing屬性做group by操作,如下:
{ ????"大象":?{ ????????"眼睛":?["大大的",?"圓圓的"], ????????"鼻子":?["高高的"], ????????"腿":?["長(zhǎng)長(zhǎng)的"], ????????"嘴":?["小小的"] ????}, ????"熊":?{ ????????... ????} }
3、對(duì)2中的數(shù)據(jù)進(jìn)行笛卡爾積運(yùn)算,done.
PS:其實(shí)是表結(jié)構(gòu)設(shè)計(jì)得不好,應(yīng)該拆分成animal表(animal_id, animal_name)和animal_prop表(animal_prop_id, animal_id, prop_name, prop_desc)。
可以采用分表,分成三張表。table1:用來(lái)記錄lei的信息 ? table2:用來(lái)記錄shuxing,table1的ID ? table3:
用來(lái)記錄miaoshu,table2的ID,用著三張表進(jìn)行關(guān)聯(lián)查詢(xún)