我的「人員」表每個人都有一行,並且該人擁有一個部門(不是唯一的)和一個公司(不是唯一的)。SQL將多個記錄合併爲一個默認值
我需要加入的人p_features,c_features,d_features上:
people.person=p_features.num_value
people.division=d_features.num_value
people.company=c_features.num_value
...的方式,如果有一個創紀錄的比賽中p_features/d_features/c_features而已,它會被退回,但如果它在2或3個表格中,則會返回最具體的記錄。
從下面我的測試數據,例如,查詢人= 1將返回 「FALSE」
人3倍的回報或許,人4個返回true,和人9返回默認
最大的問題是,有100個功能,我有查詢需要將它們全部返回一行。我以前的嘗試是一個函數,它查詢每個表中的特性num_value,並做了一個foreach,但100個特性* 4表意味着400次讀取,並且它導致數據庫停止運行,當我載入幾百萬行數據。
create table p_features ( num_value int8, feature varchar(20), feature_value varchar(128) ); create table c_features ( num_value int8, feature varchar(20), feature_value varchar(128) ); create table d_features ( num_value int8, feature varchar(20), feature_value varchar(128) ); create table default_features ( feature varchar(20), feature_value varchar(128) ); create table people ( person int8 not null, division int8 not null, company int8 not null ); insert into people values (4,5,6); insert into people values (3,5,6); insert into people values (1,2,6); insert into p_features values (4,'WEARING PANTS','TRUE'); insert into c_features values (6,'WEARING PANTS','FALSE'); insert into d_features values (5,'WEARING PANTS','MAYBE'); insert into default_features values('WEARING PANTS','DEFAULT');
這太棒了。我在Informix中沒有公共表格,因此我爲RankingFeatures提供了一個視圖,並且所有工作都完美無缺。非常感謝你的努力! – user490231 2010-11-05 17:24:55
還有一件事,因爲如果我有5個特徵,我有5行,我可以將其視爲水平視圖,例如: 選擇人,(特徵值='穿着褲子'時的值), feature ='WEARING HAT')等從你的桌子上面..希望是有道理的。 – user490231 2010-11-05 17:27:43