2010-06-15 6 views
0

J'ai une table appelée excel qui a 3 colonnes, name, id et full_name. La pièce name est la seule que j'ai et je dois remplir id et full_name. L'autre table qui contient les données est appelée tim_pismena et a 2 colonnes dont j'ai besoin, id et pismeno_name (les noms réels ne sont pas importants, mais je les écris juste pour plus de clarté). Dans le code de pseudooracle :) la sélection qui me fait les valeurs de serait fait la deuxième table quelque chose comme ceci:Comment puis-je obtenir des valeurs d'une table à une autre via des valeurs similaires?

SELECT tp.id, tp.pismeno_name 
FROM tim_pismena tp 
WHERE upper(tp.pismeno_name) LIKE IN upper('%(SELECT name FROM excel)%') 

et lorsqu'il est utilisé avec un insert, le résultat final devrait être quelque chose comme

name  id full_name 
Happy Joe 55 Very fun place Happy Joe, isn't it? 
+0

Les noms de vos tables et colonnes ne sont pas très clairs. Qu'est-ce que naziv_pismena, qu'est-ce que excel.ime? –

+0

Désolé, manqué de le changer, devrait être mieux maintenant. – Andrija

Répondre

2

Utiliser l'instruction de fusion

1 MERGE 
    2  INTO excel tgt 
    3  USING tim_pismenae src 
    4  ON (upper(src.naziv_pismena) LIKE '%'||upper(tgt.ime)||'%') 
    5 WHEN MATCHED 
    6 THEN 
    7  UPDATE 
    8  SET tgt.id = src.id 
    9  ,  tgt.full_name = src.naziv_pismena 
10 WHEN NOT MATCHED 
11 THEN 
12  INSERT (tgt.name 
13   , tgt.id 
14   , tgt.full_name) 
15  VALUES (src.naziv_pismena 
16   , src.id 
17   , src.naziv_pismena) 
18  WHERE (1 <> 1); 
+0

Je pense que vous êtes sur la bonne voie, mais que la partie LIKE n'est pas valide (même lorsque je supprime le support :) :) – Andrija

+0

Vérifiez la requête éditée – Bharat

Questions connexes