J'ai deux tables: 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>
3 Réponses :
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
Ceci est un format de données terrible. Mais vous pouvez le faire dans Postgres: puis, corrigez votre structure de données afin de disposer d'une table de jonction appropriée! P> p>
dans PostgreSQL Si votre colonne est une matrice, vous pouvez faire
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 code> 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.