0
votes

Joindre sur la liste des valeurs

J'ai deux tables: xxx pré>

afin que la première table a une liste de clés dans une cellule. Comment puis-je rejoindre ces tables pour obtenir le résultat suivant: p>

ID |name2|name1
345|hello|foo
567|world|foo
789|bar  | <null>


6 commentaires

Ne stockez pas de données comme des articles séparés par des virgules, cela ne vous causera que beaucoup de problèmes!


Ce n'est pas un bon design. Dans MSSQL, vous pouvez diviser le champ sur la virgule avec une fonction intégrée maintenant et effectuer une sélection dans laquelle dans vos valeurs analysées. Pas sûr si cela existe dans PostgreSQL intégré mais je suis sûr qu'il y a du code là-bas, vous pouvez trouver


Ce n'est pas la façon dont les clés étrangères sont censées être stockées. Serializing FKS va à l'encontre du but d'utiliser un SGBDM.


Veuillez mettre à jour la question avec les informations de schéma de table. Spécifiquement, c'est fchey une chaîne séparée par des virgules, une matrice Postgres, une matrice JSON ou un tableau JSONB?


Ce n'était pas moi qui a stocké les données comme celle-ci. Malheureusement, je dois en parler.


@Haleemurali autant que je sache, "Fey" est une chaîne habituelle séparée de virgule (texte). "Nom1" et "Nom2" sont également des textes habituels.


3 Réponses :


1
votes

Utiliser split_part () code> et rejoindre

select t2.*,a.name1 from t2 left join
(select id,name1, split_part(fkey,',',1) as key1 
from t1
union 
select id,name1, split_part(fkey,',',2) as key1 
from t1
) a on a.key=t2.id


0 commentaires

0
votes

Ceci est un format de données terrible. Mais vous pouvez le faire dans Postgres: xxx

puis, corrigez votre structure de données afin de disposer d'une table de jonction appropriée!


0 commentaires

0
votes

dans PostgreSQL Si votre colonne est une matrice, vous pouvez faire xxx

https://www.postgresql.org/docs/9.2/arrays.html


0 commentaires