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

SQL Oracle Discussion :

Problème de requête avec une date


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut Problème de requête avec une date
    bonjour, je sais pas si c'est ici ou je dois poser ma question mais j'espère trouver une réponse.

    Voila j'ai une requête qui se construit automatiquement grace à un code java, ensuite cette requete doit me retourner des valeurs, après avoir passer par une fonction qui est apelé dans mon application.

    Sauf que voilà l'utilisateur de mon application peut ne pas saisir un champ et donc ne pas remplir la valeur d'un attribut dans le where

    jusque là je testais sur la valeur qu'il saisie si elle est nulle je la remplacais par like % mais quand c'est une date il génére une erreur puisque like% dans une date ne marche pas, et il faut savoir aussi que je ne connai pas l'emplacement de mes attributs dans ma requete.

    Cette requete fait un select * from matable where attribut1 like ' valeur saisie1' and attribut2 like 'valeur saisie2' .....

    attribut1 ..... attributn sont générés automatiquement (column_name)

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par ghnawfal Voir le message
    ...
    jusque là je testais sur la valeur qu'il saisie si elle est nulle je la remplacais par like % mais quand c'est une date il génére une erreur puisque like% dans une date ne marche pas, et il faut savoir aussi que je ne connai pas l'emplacement de mes attributs dans ma requete.
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SQL> r
      1  Select *
      2    from (
      3         Select sysdate dat from dual
      4         )
      5* Where dat like '%'
     
    DAT
    --------
    17/09/08

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    cest quand le champs n'est pas indiqué que like '%' ne marche pas. moi je voudrais que meme si les champs sont vides la requete me retourne le résultat.

  4. #4
    Scorpi0
    Invité(e)
    Par défaut
    Si l'utilisateur ne renseigne pas le champ, tu ne génères pas de filtres, et ça simplifie tout.

    Pourquoi vouloir remplacer rien par like % ?
    C'est un peu se compliquer la tâche !!

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    j'ai pas bien compris ce que tu veux dire.

    Mais en réponse a mnitu c'est la seule requete qui marche pour la date, j'ai beau tester sur ma base de données mais quand c'est uen date like ne marche pas.

    Et puis Scorpi0 si vous pouvez me préciser un peu plus ca serai gentil.

    Merci

  6. #6
    Scorpi0
    Invité(e)
    Par défaut
    L'idée est de générer une requête du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * from matable 
    where 
    attribut1 like ' valeur saisie1' 
    and attribut2 like 'valeur saisie2'
    Si valeur saisie1 == NULL, alors valeur saisie1 = %.
    Ça c'est ce qui est fait pour l'instant.

    Je propose plutôt de faire une requête de base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from matable 
    where 1=1
    Le 1=1 est là pour initialiser la clause where. Ainsi, il suffit de rajouter des clauses 'and attribut2 like 'valeur saisie2''.

    Il faut ensuite tester valeur saisie2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si valeur saisie2 == NULL
        alors ne rien faire
    sinon
        ajouter and attribut2 like 'valeur saisie2' à la requête de base
    J'espère que c'est un peu plus claire

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par ghnawfal Voir le message
    ...
    Mais en réponse a mnitu c'est la seule requete qui marche pour la date, j'ai beau tester sur ma base de données mais quand c'est uen date like ne marche pas.
    ../
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SQL> r
      1  select count(*)
      2  from emp
      3* where hiredate like '%'
     
      COUNT(*)
    ----------
            14
    Peut être que le problème se trouve ailleurs.

Discussions similaires

  1. Requête avec une date
    Par marionléa dans le forum SQL
    Réponses: 3
    Dernier message: 25/05/2007, 14h19
  2. Problème de requête avec une clause IN avec les Paramètres
    Par arilanto dans le forum Accès aux données
    Réponses: 1
    Dernier message: 03/04/2007, 14h35
  3. Réponses: 1
    Dernier message: 18/08/2006, 10h01
  4. [JDBC] Requête avec une date sous la forme dd/MM/yyyy
    Par sylviefrfr dans le forum JDBC
    Réponses: 6
    Dernier message: 12/11/2005, 09h35
  5. Problème de requête avec une condition IN
    Par sorcer1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2005, 11h56

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