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

Requêtes et SQL. Discussion :

Jointure sur expression


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de ullgom
    Inscrit en
    Mai 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 59
    Points : 58
    Points
    58
    Par défaut Jointure sur expression
    Bonjour à tous,

    Pour commencer je suis sous access 2000 avec win XP pro.

    J'avais une requête 00_TDB_SReq_table_semaine dont le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [00_TDB_Paramètres].semaine, [00_MODS].Table
    FROM 00_TDB_Paramètres LEFT JOIN 00_MODS ON [00_TDB_Paramètres].Date_action = [00_MODS].[Date de la dernière mise à jour de la table]
    GROUP BY [00_TDB_Paramètres].semaine, [00_MODS].Table;
    [Date_Action] et [Date de la dernière mise à jour de la table] était tous les deux au format Date jj/mm/aaaa

    Depuis peu il à fallu une précision plus grande sur la [Date de la dernière mise à jour de la table] qui est donc passé au format jj/mm/aaaa hh:mm:ss

    La table de paramètre qui sert aussi à autre chose elle est resté avec le format jj/mm/aaaa, ce qui fait que maintenant ma jointure ne conviens plus car les données ne sont plus les même, j'ai donc voulu faire une requête intermédiaire qui prend ma table 00_MODS en intégralité mais qui tronque la date pour qu'elle soit au format jj/mm/aaaa ensuite j'ai changé la source de la requête précédante pour qu'elle prenne cette fameuse requête aux dates tronquée et obtenir mon ancien résultat.
    Mais j'ai un problème d' "Incohérence de type dans une expression" .

    J'en viens donc à ma question,
    Est ce possible de modifier directement ma jointure pour que ce soit elle qui tronque. C'est à dire faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [00_TDB_Paramètres].semaine, [00_MODS].Table
    FROM 00_TDB_Paramètres LEFT JOIN 00_MODS ON [00_TDB_Paramètres].Date_action = LEFT([00_MODS].[Date de la dernière mise à jour de la table];10)
    GROUP BY [00_TDB_Paramètres].semaine, [00_MODS].Table;
    Je dis bien du genre car j'ai essayé cette syntaxe sans succès.

    Avez vous une idée ?

    Si je ne suis pas assez clair n'hésitez pas à me demande d'avantage d'information.

    Bonne journée ( et bon appétit pour certains )

    Cordialement,

  2. #2
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Normalement cela doit être faisable. Je ne m'y connais pas en access, mais sous oracle on peut utiliser to_char à laquelle on donne la donnée à convertir (dans ce cas la date) et le format de la conversion. En faisant une conversion sur les deux dates cela reviendrait à comparer deux chaînes de caractères contenant les deux dates. Essaie de voir s'il n'y a pas une méthode pareil en access.

  3. #3
    Membre du Club Avatar de ullgom
    Inscrit en
    Mai 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    Effectivement je n'avais pas essayé en forcant le format des deux côtés.

    Cela fonctionne correctement. Merci beaucoup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [00_TDB_Paramètres].semaine, [00_MODS].Table
    FROM 00_TDB_Paramètres LEFT JOIN 00_MODS ON FORMAT([00_TDB_Paramètres].Date_action,"jj/mm/aaaa") = FORMAT([00_MODS].[Date de la dernière mise à jour de la table],"jj/mm/aaaa")
    GROUP BY [00_TDB_Paramètres].semaine, [00_MODS].Table;
    Bonne journée

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

Discussions similaires

  1. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 18h07
  2. jointure sur table et procedure stocké
    Par pram dans le forum SQL
    Réponses: 3
    Dernier message: 18/11/2004, 22h56
  3. jointure sur une même table
    Par guillaumeVb6 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/09/2004, 16h08
  4. jointure sur TROIS tables
    Par caribou_belle dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/03/2004, 12h20
  5. Jointure sur 2 tables de bases différentes
    Par Celina dans le forum Langage SQL
    Réponses: 10
    Dernier message: 10/11/2003, 12h56

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