La mise à jour de Plusieurs Colonnes à partir d'une autre table - Besoin d'Oracle format
J'ai un script que j'utilise dans SQL Server mais j'ai besoin de le convertir en un Oracle format. Quelqu'un peut-il aider?
UPDATE PERSONS P SET
P.JOBTITLE=TE.JOBTITLE,
P.LAST_NAME=TE.LAST_NAME,
P.FIRST_NAME=TE.FIRST_NAME,
P.DBLOGIN_ID=TE.DBLOGIN_ID,
P.EMAIL_ID=TE.EMAIL_ID,
P.USERLEVEL=TE.USERLEVEL,
P.FACILITY_ID=TE.FACILITY_ID,
P.SUPERVISOR=TE.SUPERVISOR,
P.DEPARTMENT=TE.DEPARTMENT,
P.WINLOGINID=TE.WINLOGINID
FROM TEMP_ECOLAB_PERSONS TE
WHERE P.PERSON=TE.PERSON;
--À partir de l'article ci-dessous, je suis venu avec l'instruction suivante. Cela ne fonctionne toujours pas malheureusement:
UPDATE (SELECT P.JOBTITLE, P.LAST_NAME, P.FIRST_NAME, P.DBLOGIN_ID, P.EMAIL_ID,
P.USERLEVEL, P.FACILITY_ID, P.SUPERVISOR, P.DEPARTMENT,
TE.JOBTITLE, TE.LAST_NAME, TE.FIRST_NAME, TE.DBLOGIN_ID, TE.EMAIL_ID,
TE.USERLEVEL, TE.FACILITY_ID, TE.SUPERVISOR, TE.DEPARTMENT
FROM PERSONS P, TEMP_ECOLAB_PERSONS TE WHERE P.PERSON=TE.PERSON)
SET
P.JOBTITLE=TE.JOBTITLE,
P.LAST_NAME=TE.LAST_NAME,
P.FIRST_NAME=TE.FIRST_NAME,
P.DBLOGIN_ID=TE.DBLOGIN_ID,
P.EMAIL_ID=TE.EMAIL_ID,
P.USERLEVEL=TE.USERLEVEL,
P.FACILITY_ID=TE.FACILITY_ID,
P.SUPERVISOR=TE.SUPERVISOR,
P.DEPARTMENT=TE.DEPARTMENT;
OriginalL'auteur PhelpsK | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
C'est comment j'allais le faire. Il serait peut-être pas le meilleur rendement, mais il fonctionne.
Le script ci-dessus permettra de mettre à jour les informations dans PERSONS_TMP table à l'aide de données de table de PERSONNES. Je crois que dans votre cas, vous souhaitez, c'est l'autre manière autour. Donc, assurez-vous d'apporter les modifications nécessaires avant d'exécuter le script.
Vous pouvez ajouter des "when not MATCHED ALORS.... "clause SQL ci-dessus dans le cas où vous avez besoin d'insérer de nouveaux enregistrements, si elle n'existe pas.
Désolé pour la confusion avec le lien de Tom site web. J'ai essayé le script de tom's site web et il ne fonctionne pas non plus. Donc, j'ai enlevé le lien vers son site web.
Il a travaillé merci!
OriginalL'auteur donny
Noter que si il y a d'autres lignes présent dans les personnes qui ne sont pas dans temp_ecolab_persons, ces lignes supplémentaires dans la table personne sera la valeur null (ou risque de causer l'échec de l'instruction avec la contrainte de non nullité de l'erreur par la mise à jour ci-dessus, donc si c'est le cas, vous avez peut être besoin d'une clause where sur l'instruction de mise à jour pour les limiter, par exemple, si je sais que les email_id champ est renseigné sur certains dossiers, mais pas sur d'autres, je peux limiter la mise à jour des lignes comme suit
OriginalL'auteur Trevor North