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

Langage SQL Discussion :

Update


Sujet :

Langage SQL

  1. #1
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut Update
    Salut tout le monde

    je voudrais savoir comment je peux mettre un champ à jour en fonction d'un count

    en gros faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     UPDATE FTRBORDEREAU
     SET TRBORDEREAU_MULTI='O'
     WHERE COUNT(*) > 1
    Mais cette requête ne fonctionne pas.

    A savoir que le count se fait sur la même table que l'update

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    tu veux faire quoi exactement ? Mettre à jour que si il y a plus d'une ligne ou mettre à jour les lignes qui compte 1... 1 quoi d'ailleur ?

  3. #3
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    je veux mettre à jour quand il y a plusieurs ligne pour le meme transporteur

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    donc ce serait de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE FTRBORDEREAU bordereau
     SET TRBORDEREAU_MULTI='O' 
     WHERE 1 < (select count(*) from transporteur where id=bordereau.tansp_id)

  5. #5
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    je vais essayer

  6. #6
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    çà ne fonctionne pas dans mon cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     UPDATE FTRBORDEREAU
     SET TRBORDEREAU_DESAC=SYSDATE
     WHERE TRBORDEREAU_CLE IN 
    (SELECT TRBORDEREAU_CLE,COUNT(*) 
    FROM FTRBORDEREAU 
    WHERE TRBORDEREAU_TRTRANSP_CLE = 16
    AND TRBORDEREAU_DESAC IS NULL 
    AND TRBORDEREAU_NB IS NULL AND
    TO_CHAR(TRBORDEREAU_EDITION) BETWEEN '29/03/2004' AND '30/03/2004'
    GROUP BY TRBORDEREAU_VTADRLIV_CLE,TRBORDEREAU_EDITION
    HAVING COUNT(*) >1)

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     UPDATE FTRBORDEREAU
     SET TRBORDEREAU_DESAC=SYSDATE
     WHERE TRBORDEREAU_CLE IN  (SELECT TRBORDEREAU_CLE
                      FROM FTRBORDEREAU 
                      WHERE TRBORDEREAU_TRTRANSP_CLE = 16
                      AND TRBORDEREAU_DESAC IS NULL 
                      AND TRBORDEREAU_NB IS NULL 
                      AND TRBORDEREAU_EDITION BETWEEN to_date('29/03/2004', 'DD/MM/YYYY')  
                                                  AND to_date('30/03/2004', 'DD/MM/YYYY')
                      GROUP BY TRBORDEREAU_VTADRLIV_CLE,TRBORDEREAU_EDITION
                      HAVING COUNT(*) >1)

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    bien sûr puisque le IN sélectionne plusieurs colonnes

  9. #9
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Comment faire alors ?

  10. #10
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par cgo
    Comment faire alors ?
    Ben heu... regarde plus haut
    J'ai aussi modifié ta façon de gérer le between de dates qui n'était pas correct

  11. #11
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    ben, çà ne fonctionne pas.
    Il me dit que ce n'est pas une expression GROUP BY

  12. #12
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par pgibone
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     UPDATE FTRBORDEREAU
     SET TRBORDEREAU_DESAC=SYSDATE
     WHERE TRBORDEREAU_CLE IN  (SELECT TRBORDEREAU_CLE
                      FROM FTRBORDEREAU 
                      WHERE TRBORDEREAU_TRTRANSP_CLE = 16
                      AND TRBORDEREAU_DESAC IS NULL 
                      AND TRBORDEREAU_NB IS NULL 
                      AND TRBORDEREAU_EDITION BETWEEN to_date('29/03/2004', 'DD/MM/YYYY')  
                                                  AND to_date('30/03/2004', 'DD/MM/YYYY')
                      GROUP BY TRBORDEREAU_CLE, TRBORDEREAU_VTADRLIV_CLE,TRBORDEREAU_EDITION
                      HAVING COUNT(*) >1)
    J'ai ajouté TRBORDEREAU_CLE dans le GROUP BY, mais je ne peux pas dire si fonctionnellement les autres éléments sont corrects

  13. #13
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    avec le having, il ne me met aucune ligne à jour alors qu'il devrait en mettre 2.

    avec le group by, il ne me met qu'une seule ligne à jour sur 4 ligne.

    Je ne comprends pas

  14. #14
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Si tu veux que nous t'aidions, il faudrait nous en dire plus sur ce que tu veux et sur le contenu des tables

  15. #15
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    je voudrais mettre une date de désactivation dans ma table trbordereau
    qui correspond aux bordereaux de transport à partir du moment où il y plusieurs enregistrements à la même adresse de livraison et à la même date d'édition et que cette date soit comprise entre 2 dates saisies par l'utilisateur.

    Bien sur il faut également que les enregistrements désactivés correspondent au même transporteur.

  16. #16
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    y'aurait-il quelqu'un pour m'aider ou me dire comment je peux faire autrement ?

  17. #17
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par pgibone
    Si tu veux que nous t'aidions, il faudrait nous en dire plus sur ce que tu veux et sur le contenu des tables
    Tant que tu nous en diras pas plus (sur le contenu des tables), moi en tout cas, je ne pourrais pas t'aider !

  18. #18
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Table Trbordereau

    TRBORDEREAU_CLE number(10,0) not null,
    TRBORDEREAU_PAST_CLE number(10,0) not null,
    TRBORDEREAU_TRTRANSP_CLE number(10,0) not null,
    TRBORDEREAU_VTADRLIV_CLE number(10,0),
    TRBORDEREAU_VTCLI_CLE number(10,0),
    TRBORDEREAU_DELAI varchar2(30),
    TRBORDEREAU_POIDSTOTAL number(7,2),
    TRBORDEREAU_COLIS number(2),
    TRBORDEREAU_TEXTE varchar2(50),
    TRBORDEREAU_P1 number(7,2),
    TRBORDEREAU_P2 number(7,2),
    TRBORDEREAU_P3 number(7,2),
    TRBORDEREAU_P4 number(7,2),
    TRBORDEREAU_P5 number(7,2),
    TRBORDEREAU_EXPED date,
    TRBORDEREAU_PRIX number(8,2),
    TRBORDEREAU_FLAGFAC char(1),
    TRBORDEREAU_DATEFAC date,
    TRBORDEREAU_EDITION date,
    TRBORDEREAU_NB number(2,0),
    TRBORDEREAU_PAUSER_CREEPAR number(10,0) not null,
    TRBORDEREAU_PAUSER_MODIFPAR number(10,0) not null,
    TRBORDEREAU_DATECREA date,
    TRBORDEREAU_DATEMODIF date,
    TRBORDEREAU_DESAC date

    Table Trtransp

    TRTRANSP_CLE number(10,0) not null,
    TRTRANSP_PAST_CLE number(10,0) not null,
    TRTRANSP_CODE Number(10,0) not null,
    TRTRANSP_PAFJ_CLE number(10,0),
    TRTRANSP_NOM varchar2(50) not null,
    TRTRANSP_ADR1 varchar2(50),
    TRTRANSP_ADR2 varchar2(50),
    TRTRANSP_ADR3 varchar2(50),
    TRTRANSP_LIBTEL1 varchar2(30),
    TRTRANSP_LIBTEL2 varchar2(30),
    TRTRANSP_LIBTEL3 varchar2(30),
    TRTRANSP_TEL1 varchar2(30),
    TRTRANSP_TEL2 varchar2(30),
    TRTRANSP_TEL3 varchar2(30),
    TRTRANSP_LIBFAX1 varchar2(30),
    TRTRANSP_LIBFAX2 varchar2(30),
    TRTRANSP_LIBFAX3 varchar2(30),
    TRTRANSP_FAX1 varchar2(30),
    TRTRANSP_FAX2 varchar2(30),
    TRTRANSP_FAX3 varchar2(30),
    TRTRANSP_LIBCONT1 varchar2(30),
    TRTRANSP_LIBCONT2 varchar2(30),
    TRTRANSP_LIBCONT3 varchar2(30),
    TRTRANSP_CONT1 varchar2(30),
    TRTRANSP_CONT2 varchar2(30),
    TRTRANSP_CONT3 varchar2(30),
    TRTRANSP_TAXENL number(5,2),
    TRTRANSP_FRAIFIX number(5,2),
    TRTRANSP_CONTREREMB number(5,2),
    TRTRANSP_CA_1 number(10,2),
    TRTRANSP_POIDS_1 number(10,2),
    TRTRANSP_AGREE char(1),
    TRTRANSP_ETIQ char(1),
    TRTRANSP_PAUSER_CREEPAR number(10,0) not null,
    TRTRANSP_PAUSER_MODIFPAR number(10,0) not null,
    TRTRANSP_DATECREA date,
    TRTRANSP_DATEMODIF date,
    TRTRANSP_DESAC date

    S'il te manque d'autres infos dit le moi.

  19. #19
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Tu viens de donner la structure de tes tables, je parle du contenu des tables (des lignes concernées).

    tu dis
    avec le having, il ne me met aucune ligne à jour alors qu'il devrait en mettre 2.
    avec le group by, il ne me met qu'une seule ligne à jour sur 4 ligne.
    Sans connaître le contenu des tables, je ne peux pas savoir si ce résultat est corect ou non

  20. #20
    cgo
    cgo est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Cle CleTransp CleAdrliv Edition DateExped
    1 16 2025 30/03/2004 30/03/2004
    2 16 2025 30/03/2004 30/03/2004
    3 16 2052 30/03/2004 30/03/2004
    4 16 2052 29/03/2004 29/03/2004

    En fait, les lignes à mettre à jour, sont les 2 premières par ce qu'elles concernent le même transporteur avec la même adresse de livraison, la même date d'expé et d'édition.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 11h40
  2. Pb d'update dans une DataGrid
    Par bidson dans le forum XMLRAD
    Réponses: 11
    Dernier message: 27/05/2003, 14h11
  3. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59
  4. Réponses: 3
    Dernier message: 10/11/2002, 11h03
  5. update et virgule
    Par Delph dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/08/2002, 14h40

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