Debutant SQL

MyName -  
 mohammede -
Bonjour,
Je dois faire une rquete en SQL mais je débute seulement c'est pourquoi cette requete me parait compliquée.
J'ai 2 tables : table1 et table2
Je veux mettre à jour la table1
mettre champA de table1 est à 'A'
où champA='T'
et où l'identifiant ( champB, champC) de la table1 n'est pas present dans la table2
(la table2 possède les meme champ B et C)

Je suis completement perdu dans les imbriquation de select.
Merci d'avance de votre aide.

6 réponses

  1. jpn Messages postés 6 Statut Membre
     
    En fait c'est pas compliqué, c'est comme t'as dit, mais avec des mots SQL !
    Normalement :

    update table1 set champA = 'A' where
    champ1='T' and (champB,champC) not in
    (select champB,champC from table2)
    0
  2. MyName
     
    A priori il aime pas le and(champB, champA) NOT IN....
    j'ai comme erreur :
    Elément syntaxique , n'est pas correct. Eléments possibles : < > = <
    0
  3. jpn Messages postés 6 Statut Membre
     
    Aïe,
    Alors, tu utilises quoi comme base de données ? Je me demande si ce que je t'ai donné ne fonctionne que pour ORACLE.
    0
  4. MyName
     
    A vrai dire la Bd est sur AS400 ...
    Donc a vrai dire je ne c pas du tout comment c foutu
    0
    1. KARI
       
      JE VOUDRAIS SAVOIR COMMENT METTRE à JOUR AU TABLE SQL EN AS400
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jpn Messages postés 6 Statut Membre
     
    alors effectivement ça marche pas sous DB2 ça.
    Il faudrait essaye le même ordre en remplaçant le couple (champB,champC) par la chaine champB concaténé avec champC sous DB2 l'opérateur de concaténation c'est +, donc l'ordre serait :

    update table1 set champA = 'A' where
    champ1='T' and (champB+champC) not in
    (select champB+champC from table2)

    A vérifier pour les parenthèses obligatoires ou non, voire interdites.
    0
  7. MyName
     
    Il ne veut pas du + :
    Utilisation incorrecte de +.

    J'ai essayé avec ttes les configurations possible de parentheses
    0
    1. mohammede
       
      Salut,
      voilà je crois qu'il faut l'écrire simplement
      update table1 set champA = 'A' where
      champ1='T' and champB not in
      (select champB from table2) and champC not in (select champc from table2).
      Bon courage.
      Merci
      0