Ma table 'people' a une ligne par personne, et cette personne a une division (non unique) et une société (non unique).SQL se joint à plusieurs enregistrements en un avec une valeur par défaut
J'ai besoin de joindre les gens à p_features, c_features, d_features sur:
people.person=p_features.num_value
people.division=d_features.num_value
people.company=c_features.num_value
... d'une manière que s'il y a un match record en p_features/d_features/c_features seulement, il serait retourné, mais si c'était dans 2 ou 3 des tables, l'enregistrement le plus spécifique serait retourné.
De mes données de test ci-dessous, par exemple, une requête pour personne = 1 retournerait « FAUX »
personne 3 retourne peut-être, personne 4 retourne vrai, et personne 9 retourne par défaut
Le plus gros problème est que il y a 100 fonctionnalités et j'ai des requêtes qui doivent tous les retourner dans une rangée. Ma tentative précédente était une fonction qui interrogeait sur la fonction, num_value dans chaque table et faisait un foreach, mais 100 caractéristiques * 4 tables signifiait 400 lectures et il a arrêté la base de données il était si lent quand j'ai chargé quelques millions de lignes de Les données.
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');
C'est génial. Je n'ai pas de tables communes dans Informix alors j'ai fait une vue et une fonction de classement. Merci beaucoup pour ton effort! – user490231
Encore une chose, puisque si j'ai 5 caractéristiques, j'ai 5 lignes, puis-je faire une vue de ceci dans une vue horizontale comme: sélectionner une personne, (valeur lorsque feature = 'PANTALON DE PORT »), (valeur lorsque feature = 'PORT DE CHAPEAU'), etc de votre tableau ci-dessus .. espérons que cela a du sens. – user490231