j'ai un type composite qui ressembleCarte pour nom de table et rejoindre
CREATE TYPE member AS (
id BIGINT,
type CHAR(1)
);
J'ai une table qui repose sur ce type member
avec un tableau.
CREATE TABLE relation (
id BIGINT PRIMARY KEY,
members member[]
);
J'ai trois autres tables chacune avec un schéma différent (mais avec champ id
commun)
CREATE TABLE table_x (
id BIGINT PRIMARY KEY,
some_text TEXT
);
CREATE TABLE table_y (
id BIGINT PRIMARY KEY,
some_int INT
);
CREATE TABLE table_z (
id BIGINT PRIMARY KEY,
some_date TIMESTAMP
);
terrain type
dans le type member
est juste un personnage à découvrir table membre spécifique appartient. Une ligne dans le tableau relation
peut avoir un mélange de différents type
s.
J'ai un scénario qui exige le retour relation
ids avec au moins un member
remplissant une certaine condition basée sur son type (disons pour x
=>some_text
est pas vide ou y
=>some_int
est supérieur à 10 ou z
=>some_date
est une semaine est à partir de maintenant).
Je peux mettre en œuvre ce scénario du côté de l'application en faisant plusieurs requêtes à la base de données:
- unnest
relation
Table - recueillir
member
données parrelation
- faire de nouvelles demandes pour savoir
relation
s
Je me demande s'il existe un moyen de mapper des valeurs de colonne aux noms de table et rejoignez-les.
Avez-vous des données d'échantillon et résultat attendu? – cachique
Cela ressemble à une conception de base de données pas si bonne que nous entrons dans le territoire des noms de tables dynamiques.Il n'y a aucun moyen dans une seule requête de dire "Utiliser la valeur d'un champ dans cette table pour obtenir le nom de la table à laquelle je dois me joindre, joindre-y, et sélectionner les données". Bien que si vous pouvez expliquer les exemples dont vous avez besoin, il existe peut-être une solution de contournement pour joindre toutes les tables et fusionner. – JNevill