Je dois donc trouver comment insérer dans une table, à partir d'une autre table, avec une clause where qui me demande d'accéder à la table que j'insère dans . J'ai essayé un alias de la table dans laquelle je l'insère, mais j'ai rapidement découvert que vous ne pouvez pas faire cela. Fondamentalement, ce que je veux vérifier, c'est que les valeurs que j'insère dans la table correspondent à un champ particulier de la table dans laquelle j'insère. Voici ce que j'ai essayé:Insérer avec select, en fonction des valeurs de la table d'insertion dans EDITED
INSERT INTO "USER"."TABLE1" AS A1
SELECT *
FROM "USER"."TABLE2" AS A2
WHERE A2."HIERARCHYLEVEL" = 2
AND A2."PARENT" = A1."INSTANCE"
Évidemment, cela n'a servi à rien. J'ai déjà essayé quelques autres requêtes, mais elles ne m'ont nulle part non plus. Toute aide serait très appréciée.
EDIT: Je souhaite ajouter des lignes à cette table, sans ajouter de colonnes à la table. Les deux tables ont exactement la même structure - en fait, j'ai extrait les données déjà dans table1 de table2. Ce que j'ai dans la table 1 actuellement, c'est un tas d'enregistrements qui n'ont AUCUN PARENT, mais une instance. Ce que je veux ajouter, c'est tous les enregistrements qui ont un parent dans la table2 qui sont égaux à l'instance dans le tableau 1.
Pourquoi ne pas utiliser un JOIN pour trouver les lignes dont vous avez besoin? – danielsepulvedab
Vous devez avoir une sorte de lien/jointure et une restriction sur A1 dans votre sous-requête. Si la sous-requête ne fonctionne pas seule (en tant que requête de niveau supérieur), corrigez-la en premier. – vwegert
@danielsepulvedab S'il vous plaît élaborer ... Je ne suis pas sûr de comprendre. Essayez-vous de dire quelque chose comme: SELECT * FROM (TABLE1 INNER JOIN TABLE2 SUR TABLE1.INSTANCE = TABLE2.PARENT)? –