Bonjour,
j'ai un pb avec une requête dans un script dont je dois saisir les paramètres:

-> mes tables:
customer(customer_id,name)
sales_order(order_id,customer_id,order_date)

A partir d'un script, je saisi les paramètres "nom client" au prompt ainsi qu'un interval de date pour lequel j'affiche les commandes (date min, date max)
cette requête fonctionne bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
--with all parameters
select c.name as "NAME",s.order_date,s.total
FROM sales_order s,customer c
WHERE s.customer_id=c.customer_id and c.name='&NAME' and s.order_date between '&DATE_MIN' and '&DATE_MAX';
je dois modifier cette requête afin que, si l'utilisateur ne saisi pas les paramètres lorsque le prompt lui demande, j'affiche la liste de tous les clients et sur la plage de dates comprise entre la plus petites et la plus grande date existant dans la table.

Voici ma requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
SELECT c.name as "NAME",
s.order_date,
s.total
FROM sales_order s,customer c
WHERE s.customer_id=c.customer_id 
--with c.name parameter is null or not null
and c.name=(select CASE 
WHEN '&NAME'='' THEN (select c.name as "NAME") 
WHEN '&NAME' IS NOT NULL THEN  (select '&NAME' as "NAME"))
and s.order_date 
--with &DATE_MIN and &DAT_MAX are null or not null
between
(select case
WHEN '&DATE_MIN'='' THEN (select min(s.order_date))
WHEN '&DATE_MIN' IS NOT NULL THEN '&DATE_MIN')
and
(select case
WHEN '&DATE_MAX'='' THEN (select max(s.order_date))
WHEN '&DATE_MAX'IS NOT NULL THEN '&DATE_MAX');