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 requete union


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 31
    Points
    31
    Par défaut Problème requete union
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 'user9'as libelle,user9  as valeur ,'Caractère' as type  FROM factures  WHERE idsoc= '1' AND idrec = 'C101001680' AND id = 15 
    UNION 
    SELECT 'userd1' as libelle,userd1 as  valeur ,'Date' as type  FROM factures  WHERE idsoc= '1' AND idrec = 'C101001680' AND id = 15
    cette requete me retourne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de syntaxe lors de la conversion d'une valeur datetime à partir d'une chaîne de caractères.

    Pourtant les deux requetes fonctionnent les unes sans les autres

    Comment résoudre ce problème ?

    Merci

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    de quel type sont tes différentes colonnes?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Pardon

    Oui, les user9 est de type charactere

    et userd1 est de type date

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    556
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 556
    Points : 1 198
    Points
    1 198
    Par défaut
    Bonjour,

    Vous donnez vous-même la réponse

    Utiliser CAST ou CONVERT pour transformer votre date en char dans votre 2ème requête et tout devrait rentrer dans l'ordre.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 'user9' as libelle,user9  as valeur ,'Caractère' as type  FROM factures  WHERE idsoc= '1' AND idrec = 'C101001680' AND id = 15 
    UNION 
    SELECT 'userd1' as libelle,convert(datetime,userd1) as  valeur ,'Date' as type  FROM factures  WHERE idsoc= '1' AND idrec = 'C101001680' AND id = 15
    cela ne fonctionne pas non plus

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Et puis même, c'est déjà un type date, donc pourquoi j'aurais besoin de le reconvertir ?

  7. #7
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    Citation Envoyé par lanjolanjo Voir le message
    Et puis même, c'est déjà un type date, donc pourquoi j'aurais besoin de le reconvertir ?
    tu ne dois pas le convertir en date mais en chaine de cractères

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    556
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 556
    Points : 1 198
    Points
    1 198
    Par défaut
    l'instrcution UNION fusionne tes requêtes en 1 seul jeu de résultat. Chaque colonne de chaque requête indépendante doit avoir le même typage et aussi le même nombre de colonne.

    Dans ta première requête ta 2ème colonne est un char
    Dans ta 2ème requête ta 2ème colonne est un datetime

    Donc UNION incompatible, d'où le message d'erreur.

    Citation Envoyé par Ry_Yo Voir le message
    Utiliser CAST ou CONVERT pour transformer votre date en char dans votre 2ème requête et tout devrait rentrer dans l'ordre.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    ok, donc je dois convertir en nvarchar

    ça marche

    merci.

    derniere question : quand je le fais, cela me donne ça

    mars 19 2009 12:00AM

    j'voudrais qu'il me donne un truc du style '19/13/2009'

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    556
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 556
    Points : 1 198
    Points
    1 198
    Par défaut
    Sous sqlserver c'est un paramètre de CONVERT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    convert(VARCHAR,userd1,103)

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    et cette instruction fonctionne sous oracle ?

  12. #12
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Oracle a fait les choses un peu plus intelligement, on écrit directement le format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_char(userd1, 'dd/mm/yyyy')
    Pour la conversion il faut voir ce que vous faites de votre requête.
    Convertir l'un en date ou l'autre en char la fera fonctionner, mais est-ce optimal ?

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

Discussions similaires

  1. Probléme de rand dans une requete union
    Par m4riachi dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/05/2011, 16h16
  2. Réponses: 15
    Dernier message: 07/11/2008, 15h53
  3. Problème group by dans requete union
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 07/01/2008, 16h49
  4. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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