IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

merge into + where


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    MOE
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : MOE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut merge into + where
    je viens de changer le code Acces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE T_Trafic_RRCap_Support LEFT JOIN [Liste des sites] ON T_Trafic_RRCap_Support.SiteRadio = [Liste des sites].[Num site] SET [Liste des sites].Mode_racco_2G = T_Trafic_RRCap_Support!TypeSupport, [Liste des sites].Site_A_2G = T_Trafic_RRCap_Support!Site_Racco, [Liste des sites].Nb_E1_2G = T_Trafic_RRCap_Support!Nombre_E1, [Liste des sites].Dat_Maj_infos_RRCAP = T_Trafic_RRCap_Support!DateMAJ
    WHERE ((([Liste des sites].[Num site]) Is Not Null) AND ((T_Trafic_RRCap_Support.TypeTrafic)="Abis") AND ((T_Trafic_RRCap_Support.StatusAbisIub)="R" Or (T_Trafic_RRCap_Support.StatusAbisIub)="M" Or (T_Trafic_RRCap_Support.StatusAbisIub)="A"));
    en oracle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
     
    MERGE INTO Liste_des_sites l 
    USING (
     
    select trafic.SiteRadio, trafic.TypeSupport,
     
    trafic.Site_Racco,
     
    trafic.Nombre_E1, 
     
    trafic.DateMAJ  from T_Trafic_RRCap_Support trafic
     
    WHERE ( upper( trafic.TypeTrafic) ='ABIS'
     
    AND (upper(trafic.StatusAbisIub) ='R'
     
     Or upper(trafic.StatusAbisIub)='M'
     Or upper(trafic.StatusAbisIub)='A'
     
     
    )))t
     
    ON (l.Num_site = t.SiteRadio and l.Num_site is not null )
    WHEN MATCHED THEN UPDATE SET
     
    l.Mode_racco_2G = t.TypeSupport,
     
    l.Site_A_2G = t.Site_Racco,
     
    l.Nb_E1_2G = t.Nombre_E1, 
     
    l.Dat_Maj_infos_RRCAP = t.DateMAJ
    Par contre, il me genere une erreur :



    Erreur SQL : ORA-30926: impossible d'obtenir un ensemble de lignes stables dans les tables source
    30926. 00000 - "unable to get a stable set of rows in the source tables"
    *Cause: A stable set of rows could not be got because of large dml
    activity or a non-deterministic where clause.
    *Action: Remove any non-deterministic where clauses and reissue the dml.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Ajoutez SiteRadio dans le select et supprimez la condition inutile: AND l.Num_site IS NOT NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    MERGE INTO Liste_des_sites l
    USING (SELECT trafic.SiteRadio,
                  trafic.TypeSupport,
                  trafic.Site_Racco,
                  trafic.Nombre_E1,
                  trafic.DateMAJ
             FROM T_Trafic_RRCap_Support trafic
            WHERE (upper(trafic.TypeTrafic) = 'ABIS' AND
                  (upper(trafic.StatusAbisIub) = 'R' OR
                  upper(trafic.StatusAbisIub) = 'M' OR
                  upper(trafic.StatusAbisIub) = 'A'))) t
    ON (l.Num_site = t.SiteRadio)
    WHEN MATCHED THEN
      UPDATE
         SET l.Mode_racco_2G       = t.TypeSupport,
             l.Site_A_2G           = t.Site_Racco,
             l.Nb_E1_2G            = t.Nombre_E1,
             l.Dat_Maj_infos_RRCAP = t.DateMAJ

  3. #3
    Membre du Club
    Profil pro
    MOE
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : MOE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    Bonjour,
    je viens d'ajouter siteRadio dans le select et la condition !=null dans la clause where la requete devient :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    MERGE INTO Liste_des_sites l
    USING (SELECT trafic.SiteRadio,
                  trafic.TypeSupport,
                  trafic.Site_Racco,
                  trafic.Nombre_E1,
                  trafic.DateMAJ
             FROM T_Trafic_RRCap_Support trafic
            WHERE (trafic.SiteRadio !=null and upper(trafic.TypeTrafic) = 'ABIS' AND
                  (upper(trafic.StatusAbisIub) = 'R' OR
                  upper(trafic.StatusAbisIub) = 'M' OR
                  upper(trafic.StatusAbisIub) = 'A'))) t
    ON (l.Num_site = t.SiteRadio)
    WHEN MATCHED THEN
      UPDATE
         SET l.Mode_racco_2G       = t.TypeSupport,
             l.Site_A_2G           = t.Site_Racco,
             l.Nb_E1_2G            = t.Nombre_E1,
             l.Dat_Maj_infos_RRCAP = t.DateMAJ
    Parc contre, j'ai remarqué que la requete fonctionne bien avec trafic.SiteRadio !=null et genere une erreur avec trafic.SiteRadio is not null


    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] INSERT INTO WHERE
    Par syl2042 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/08/2007, 18h11
  2. 9i : problème avec MERGE INTO
    Par Vld44 dans le forum SQL
    Réponses: 1
    Dernier message: 16/08/2007, 11h27
  3. [SQL] Erreur lors de INSERT INTO => WHERE
    Par DeFCrew dans le forum Access
    Réponses: 14
    Dernier message: 07/08/2006, 16h26
  4. INSERT INTO .... WHERE ... problème de syntaxe ...
    Par snoopy69 dans le forum Oracle
    Réponses: 6
    Dernier message: 29/08/2005, 16h18
  5. insert into + where
    Par bagheera dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/06/2004, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo