Soucis avec une reqête sql (oracle) [Résolu]

Soucis avec une reqête sql (oracle) [Résolu] - SQL/NoSQL - Programmation

Marsh Posté le 04-03-2016 à 14:02:09    

Bonjour, J'ai un soucis avec une requête SQL.  
 
 
select  
case when gg.c_good_status=3 then 'Suspendu'
     when gg.c_good_status=2 then 'Actif'
     when gg.c_good_status=5 then 'Historié'
     else 'Inderterminé' end as Status,
gg.goo_major_reference,
gg.goo_secondary_reference,
gg.dic_good_family_id,
gg.dic_good_line_id,
case when (select sp.spo_stock_quantity from stm_stock_position sp where sp.gco_good_id=gg.gco_good_id) is not null then  
(select sp.spo_stock_quantity from stm_stock_position sp where sp.gco_good_id=gg.gco_good_id)
 else 0  end as Qty

from gco_good gg
 
 
Cette partie ne me plait pas du tout, je suis sûr que l'on peut l'écrire de manière plus propre sans faire les deux requêtes identiques (select).  
 
De plus, elle fonctionne sous certain editeur sql mais pas sous d'autre ce qui me fait dire que clairement. il y a un soucis.  
 
Erreur obtenu sur certain éditeur :
 
ORA-01427: sous-interrogation ramenant un enregistrement de plus d'une ligne
01427. 00000 -  "single-row subquery returns more than one row"
*Cause:    
*Action:
 
 
Ma question comment vous feriez cette partie en rouge ? en passant par une variable pour stockez le résultat ou d'une autre manière ?


Message édité par bossamiral2 le 04-03-2016 à 14:57:08
Reply

Marsh Posté le 04-03-2016 à 14:02:09   

Reply

Marsh Posté le 04-03-2016 à 14:56:02    

oki j'ai récrit ma requête de cette manière, ça à l'air plus propre
 
select  
case when gg.c_good_status=3 then 'Suspendu'
     when gg.c_good_status=2 then 'Actif'
     when gg.c_good_status=5 then 'Historié'
     else 'Inderterminé' end as Status,
gg.goo_major_reference,
gg.goo_secondary_reference,
gg.dic_good_family_id,
gg.dic_good_line_id,
case when sp.spo_stock_quantity  is not null then sp.spo_stock_quantity  
     else 0 end as QTY
from gco_good gg  
left outer join stm_stock_position sp on gg.gco_good_id=sp.gco_good_id
order by gg.c_good_status,gg.dic_good_line_id,gg.dic_good_family_id,gg.goo_major_reference


Message édité par bossamiral2 le 04-03-2016 à 15:13:55
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed