alias de subquery avec Oracle [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 22-05-2009 à 13:11:47
rien compris à ce que tu veux faire... essaie d'être plus explicite stp (j'ai bien compris que tu voulais aliaser une sous requête, mais je soupçonne qu'il existe bien plus simple que ce que tu veux faire)
Marsh Posté le 22-05-2009 à 13:36:58
Tu peux regarder du coté des vues aussi ... 
 
create view MYVIEW 
as (select chp1, chp2 from matable) 
 
ensuite  
 
select M.chp1 from MYVIEW M .... 
 
Marsh Posté le 22-05-2009 à 13:57:41
Merci,  
je vais jeter un oeil, 
 
Voila ma query... et le probleme, c est l alias. 
Je voudrais simplement nommer mes 2 queries: 
CID_max et l autre CID_hour et avec Oracle, ca n a pas l air si simple... 
 
 
( 
select  max((t.pmexisorigconns+t.pmexistermconns+t.pmexistransconns)/248)  CID ,to_date(t.cbt),v.site_id 
 from pmdata_u850_xshmy90801.aal2ap_a t  
inner join site_subrack v on v.site_id=substr(t.fdn,length(t.fdn)-6) 
where t.CBT>to_date(SYSDATE) AND t.timeres_id=1 
group by  to_date(t.CBT),v.site_id 
) CID_max 
 
(select  (t.pmexisorigconns+t.pmexistermconns+t.pmexistransconns)/248  CID ,t.cbt hour, to_date(cbt),v.site_id 
 from pmdata_u850_xshmy90801.aal2ap_a t  
inner join site_subrack v on v.site_id=substr(t.fdn,length(t.fdn)-6) 
where t.CBT>to_date(SYSDATE) AND t.timeres_id=1 
) CID_hour 
 
select CID_max.CID,CID_max.date,CID_max.site_id,CID_hour.hour from CID_max 
inner join CID_hour on CID_hour.site_id=CID_max.site_id AND CID_hour.CID=CID_max.CID AND CID_hour.date=CID_max.date 
 
 
Oui, il y a d autres alternative, je suis d accord, genre un  Rank() over Partition, mais bon. 
 
Merci!
Marsh Posté le 22-05-2009 à 14:22:39
create view CID_max  
as 
(  
select  max((t.pmexisorigconns+t.pmexistermconns+t.pmexistransconns)/248)  CID ,to_date(t.cbt),v.site_id  
 from pmdata_u850_xshmy90801.aal2ap_a t   
inner join site_subrack v on v.site_id=substr(t.fdn,length(t.fdn)-6)  
where t.CBT>to_date(SYSDATE) AND t.timeres_id=1  
group by  to_date(t.CBT),v.site_id  
)  
 
et 
 
create view CID_hour  
as 
(select  (t.pmexisorigconns+t.pmexistermconns+t.pmexistransconns)/248  CID ,t.cbt hour, to_date(cbt),v.site_id  
 from pmdata_u850_xshmy90801.aal2ap_a t   
inner join site_subrack v on v.site_id=substr(t.fdn,length(t.fdn)-6)  
where t.CBT>to_date(SYSDATE) AND t.timeres_id=1  
)  
et la requête d'après devrait passer ;-)
Marsh Posté le 22-05-2009 à 14:36:51
essayes un truc de ce style : 
| Code : 
 | 
Marsh Posté le 23-05-2009 à 10:29:56
merci, j essayerai au boulot lundi! 
Je ne connaissais pas create view.... mais ca semble pas mal du tout. 
 
Couak, oui, il me semble avoir essayer ca aussi, mais ca coince au niveau de CID_max, toujours le meme probleme avec le nom de la subquery...
Marsh Posté le 25-05-2009 à 10:36:19
bah chez moi ca marche =) pas ta requête car j'ai la flemme de recréer les mêmes structure de table, mais le même style j'ai pas de soucis 
en postant ton message d'erreur et ta requête peut-être qu'on y verra mieux
Marsh Posté le 25-05-2009 à 10:49:45
il faut voir exactement ce que tu veux faire, si tu veux garder la structure que tu as écrit alors il faut passer par un WITH, je te laisse chercher dans la doc, en gros cela permet de définir un query et de l'aliaser, puis de le réutiliser dans une autre requête, cela sert a alléger la lecture du code, mais c'est surtout utile si cette query est utilisée plusieurs fois dans un même query, car déja, ce n'est écrit qu'une fois, mais surtout la requête ne sera effectuée que une fois même si plusieurs appels. 
 
 
mais dans ton cas pourquoi ne fais tu pas juste 
 
 
| Code : 
 | 
 
 
Marsh Posté le 22-05-2009 à 13:09:19
Bonjour,
j'ai un petit probleme sous Oracle, l example ci dessous n'est pas optimum, mais j aimerai bien pouvoir le faire marcher:
query A:
select ... from....
Query B
select ... from ....
Query C
select A.xxx B.xxx from A
inner join A.yyy=B.yyyy AND ....
donc voila,le probleme est le suivant:
Comment nomme toi une querie sous Oracle?
J ai essaye pas mal de chose, genre "AS" ou rien et a chaque ca coince dessus:
(select .... from....) A
Voila
Merci