Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/09/2008, 13h37   #1
Nouveau Membre du Club
 
Inscription : mars 2008
Messages : 186
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 186
Points : 34
Points : 34
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)
ghnawfal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 15h08   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 320
Points : 5 839
Points : 5 839
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 :
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
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2008, 11h43   #3
Nouveau Membre du Club
 
Inscription : mars 2008
Messages : 186
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 186
Points : 34
Points : 34
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.
ghnawfal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2008, 11h50   #4
Scorpi0
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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 !!
  Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2008, 11h52   #5
Nouveau Membre du Club
 
Inscription : mars 2008
Messages : 186
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 186
Points : 34
Points : 34
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
ghnawfal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2008, 12h02   #6
Scorpi0
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
L'idée est de générer une requête du genre

Code :
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 :
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 :
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
  Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2008, 14h23   #7
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 320
Points : 5 839
Points : 5 839
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 :
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.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h02.


 
 
 
 
Partenaires

Hébergement Web