Sql update avec alias
Résolu/Fermé
ClémentDelahoche
Messages postés
19
Date d'inscription
lundi 28 décembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009
-
28 déc. 2009 à 09:36
dert72 - 25 janv. 2010 à 18:56
dert72 - 25 janv. 2010 à 18:56
Bonjour,
Voila j'ai une table qu'on va appelé TB
Dedans j'ai un ligne param1, param2, param3, param4
je voudrais faire un update de TB quand tb1.param1=tb2.param1, tb1.param2=tb2.param2 et set tb1.param3=tb2.param3 quand tb2.param4=val1 et tb1.param=val2
Le problème est qu'on peut pas faire d'alias sur un update et que je travail sur une seule table.
Voila j'ai une table qu'on va appelé TB
Dedans j'ai un ligne param1, param2, param3, param4
je voudrais faire un update de TB quand tb1.param1=tb2.param1, tb1.param2=tb2.param2 et set tb1.param3=tb2.param3 quand tb2.param4=val1 et tb1.param=val2
Le problème est qu'on peut pas faire d'alias sur un update et que je travail sur une seule table.
A voir également:
- Sql update avec alias
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Winget update - Guide
- Windows update 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
25 réponses
moiced59
Messages postés
1145
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
60
28 déc. 2009 à 16:54
28 déc. 2009 à 16:54
petite question:
SELECT ct1.ref_couv_soc FROM couverture_tiers ct1, couverture_tiers ct2
WHERE ct1.ref_individu = ct2.ref_individu
AND ct1.ref_couv_soc = ct2.ref_couv_soc cette ligne te sert juste a renvoyé les enregistrement non nul
AND ct1.ref_risque <> ct2.ref_risque ??? dc la plus aucun resulat
AND ct1.type_organisme ='RO'
AND ct2.type_organisme ='RC'
explique moi la <> entre ta requete et celle ci stp:
SELECT ref_couv_soc FROM couverture_tiers
WHERE ref_individu <> ""
AND ref_couv_soc <>""
AND type_organisme ='RO' or type_organisme ='RC'
SELECT ct1.ref_couv_soc FROM couverture_tiers ct1, couverture_tiers ct2
WHERE ct1.ref_individu = ct2.ref_individu
AND ct1.ref_couv_soc = ct2.ref_couv_soc cette ligne te sert juste a renvoyé les enregistrement non nul
AND ct1.ref_risque <> ct2.ref_risque ??? dc la plus aucun resulat
AND ct1.type_organisme ='RO'
AND ct2.type_organisme ='RC'
explique moi la <> entre ta requete et celle ci stp:
SELECT ref_couv_soc FROM couverture_tiers
WHERE ref_individu <> ""
AND ref_couv_soc <>""
AND type_organisme ='RO' or type_organisme ='RC'
ClémentDelahoche
Messages postés
19
Date d'inscription
lundi 28 décembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009
28 déc. 2009 à 17:06
28 déc. 2009 à 17:06
la requête que tu viens de me fournir ne fonctionne pas du tout (message d'erreur): identificateur de longueur zéro interdit)
en fait pour t'expliquer un peu "le métier"
pour une couverture sociale (ref_couv_soc) il peut y avoir plusieurs patient (donc on teste que c'est bien la couverture d'un patient)
cette couverture se décompose en plusieures lignes
une ligne RO et une ligne RC
il faut que la ref_risque de la ligne RO et la ligne RC soit identique
donc le soucis est bien de forcer un ligne avec la valeur de l'autre si elle est différente.
je sais pas si je suis clair.
en fait pour t'expliquer un peu "le métier"
pour une couverture sociale (ref_couv_soc) il peut y avoir plusieurs patient (donc on teste que c'est bien la couverture d'un patient)
cette couverture se décompose en plusieures lignes
une ligne RO et une ligne RC
il faut que la ref_risque de la ligne RO et la ligne RC soit identique
donc le soucis est bien de forcer un ligne avec la valeur de l'autre si elle est différente.
je sais pas si je suis clair.
ClémentDelahoche
Messages postés
19
Date d'inscription
lundi 28 décembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009
28 déc. 2009 à 17:39
28 déc. 2009 à 17:39
j'ai trouvé, ptn c'était chaud mais voila
merge into couverture_tiers t1
using couverture_tiers t2 on (t2.ref_individu=t1.ref_individu and t1.ref_couv_soc=t2.ref_couv_soc)
WHEN MATCHED THEN
update set t1.ref_risque=t2.ref_risque
where (t2.type_organisme='RO' and t1.type_organisme='RC')
and t2.ref_risque<>t1.ref_risque
il a fallut en lire de formum pour découvrir ce merge into qui est assez géniale et qui va m'aider énormément (car on a une base un peu bizarre avec notament pas vraiment de clé primaire)
merge into couverture_tiers t1
using couverture_tiers t2 on (t2.ref_individu=t1.ref_individu and t1.ref_couv_soc=t2.ref_couv_soc)
WHEN MATCHED THEN
update set t1.ref_risque=t2.ref_risque
where (t2.type_organisme='RO' and t1.type_organisme='RC')
and t2.ref_risque<>t1.ref_risque
il a fallut en lire de formum pour découvrir ce merge into qui est assez géniale et qui va m'aider énormément (car on a une base un peu bizarre avec notament pas vraiment de clé primaire)
moiced59
Messages postés
1145
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
60
28 déc. 2009 à 17:44
28 déc. 2009 à 17:44
et bien bravo je t aurais pas aidé dsl !!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ClémentDelahoche
Messages postés
19
Date d'inscription
lundi 28 décembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009
28 déc. 2009 à 17:45
28 déc. 2009 à 17:45
merci déjà d'avoir essayé et passé du temps dessus
@+ (je vais pouvoir partir du taf sur une victoire)
@+ (je vais pouvoir partir du taf sur une victoire)