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