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 :

Problème de date dans requête de màj imbriquée


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Points : 16
    Points
    16
    Par défaut Problème de date dans requête de màj imbriquée
    Bonjour à tous,

    J'ai un petit souci avec la requête suivante :

    UPDATE CONTRAT SET DFIN = "(SELECT DATE
    FROM TEMP
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT)"
    WHERE idxCONTRAT IN
    (SELECT idxCONTRAT
    FROM TEMP);

    Mon problème est la requête imbriquée :"(SELECT DATE
    FROM TEMP
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT)"

    En effet, le résultat est une date par conséquent, j'obtiens un message m'avertissant que la requête ne peut pas être exécutée à cause d'erreur de conversion de type.

    Malheureusement, je ne vois pas comment je dois écrire cette requête pour qu'elle fonctionne.

    Merci mille fois d'avance à celui qui pourra m'aider.

  2. #2
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    SGBDR???
    DFIN est un varchar2???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE CONTRAT  SET DFIN = (SELECT to_char(TEMP.DATE, FORMAT)
    FROM TEMP 
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT);
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Le sujet, c'est "Langage SQL" et ce que j'essaie de faire, c'est une requête SQL dans Access.

    Pour info :
    Contrat et Temp sont des tables.
    Dfin et idxContrat sont des champs de la table Contrat.
    Date et idxContrat sont des champs de la table Temp.

    Access ne reconnaît pas "to_char".

    Merci quand même !

  4. #4
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Si c'est pour ACCESS, il y a un site exprès.

    Pour ta réponse, je pense que c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE CONTRAT  SET DFIN = (SELECT format(TEMP.DATE, "dd/mm/yyyy") 
    FROM TEMP 
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT);
    Tu peux changer le format s'il ne correspond pas avec celui que tu utilise, regarde dans format de l'aide acces et tu comprendras.

    Salut.

  5. #5
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    Citation Envoyé par VirginieGE
    Le sujet, c'est "Langage SQL" et ce que j'essaie de faire, c'est une requête SQL dans Access.
    Justement le problème est que l'ensemble des SGBDR ne respectent pas forcément la norme et/ou ont des fonctions spécifiques permettant de faire telle ou telle requête. C'est pour cela que je t'ai posé la quesiton du SGBDR. De plus le format de tes données peut être important afin de te trouver la solution la plus adaptée à ton problème.
    En espérant que TAN t'es donné la solution.
    Bon courage
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Merci à Pinocchio... apparemment, je suis sur la bonne voie avec la requête de Tan, sauf que maintenant, une fenêtre me demandant la valeur du paramêtre TEMP.idxCONTRAT apparaît...

  7. #7
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    C'est tout simplement qu'il n'y a pas de champ idxContrat dansl la table temp, vérifies l'orthographe.

    Oui fois vérifié, informe nous sur la situation. Salut.

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Salut et encore merci.

    Si j'utilise la requête suivante :
    UPDATE CONTRAT SET DFIN = (SELECT format(TEMP.DATE, "dd/mm/yyyy")
    FROM TEMP
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT);
    un message me disant que je dois utiliser une requête updateable apparaît.

    Quand j'utilise la requête suivante :
    UPDATE CONTRAT SET DFIN = (SELECT format(TEMP.DATE, "dd/mm/yyyy")
    FROM TEMP)
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT;
    un message me disant que je dois entrer la valeur du paramètre TEMP.idxCONTRAT apparaît.

    J'ai fait les vérif. et il y a bien un champ idxCONTRAT dans ma table TEMP.

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    VOILA LA SOLUTION :

    UPDATE CONTRAT, TEMP
    SET CONTRAT.DFIN = TEMP.DATE
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT;

    MERCI ENCORE MILLE FOIS POUR VOTRE AIDE.

  10. #10
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Pense à marquer [Résolu] ton poste.
    Merci.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Points : 16
    Points
    16
    Par défaut [Resolu] Problème de date dans requête màj
    Citation Envoyé par VirginieGE
    Bonjour à tous,

    J'ai un petit souci avec la requête suivante :

    UPDATE CONTRAT SET DFIN = "(SELECT DATE
    FROM TEMP
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT)"
    WHERE idxCONTRAT IN
    (SELECT idxCONTRAT
    FROM TEMP);

    Mon problème est la requête imbriquée :"(SELECT DATE
    FROM TEMP
    WHERE TEMP.idxCONTRAT = CONTRAT.idxCONTRAT)"

    En effet, le résultat est une date par conséquent, j'obtiens un message m'avertissant que la requête ne peut pas être exécutée à cause d'erreur de conversion de type.

    Malheureusement, je ne vois pas comment je dois écrire cette requête pour qu'elle fonctionne.

    Merci mille fois d'avance à celui qui pourra m'aider.

  12. #12
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

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

Discussions similaires

  1. Problème de date dans requête
    Par Julien42 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/06/2011, 18h44
  2. problème d'extraction de date dans requêtes imbriquées
    Par tomguiss dans le forum Requêtes
    Réponses: 1
    Dernier message: 29/12/2007, 11h10
  3. problème valeur date dans une requête
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/06/2007, 19h13
  4. Problème avec date dans requête
    Par alain94 dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2006, 07h49
  5. [Access 2003] - Problème date dans requête
    Par Leesox dans le forum Access
    Réponses: 11
    Dernier message: 14/10/2005, 08h51

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