Temat: [Oracle] kłopotliwe pod-podzapytanie

Witam,

mam następujący problem, próbuję zwrócić numery telefonów podzapytaniem:


select rownum, sysdate, c.udf_citi_status, (select udf_personal_id from ika_debtor d where d.contactid = c.debtorid), c.clientcustomerrefno,'','N','N',

( select t.value from (select ROWNUM rwnum, comm.value from ika_Communication comm
JOIN ika_CommunicationMeans ON comm.COMMUNICATIONMEANSID=ika_communicationmeans.ID
where comm.ContactID=c.debtorid AND comm.Active=1 AND comm.memo = c.clientcustomerrefno AND ika_communicationmeans.Designation IN ('Telefon','Telefon komórkowy')) t
WHERE t.rwnum = 1
) as Telefon1


from ika_ccase c
where c.clientno = '6500' and substr(c.udf_citi_status,length(c.udf_citi_status)) in ('3','4','0') and c.subcase = '0'


Problem w tym że ani c.clientcustomerrefno ani c.debtorid nie jest widoczny w podwójnym zagnieżdżeniu, a takie musi być żebym mógł zwrócić 1 , 2 i 3 wartość podazapytania.

2 i 3 podselect pominąłem by było bardziej czytelne.

Opis błędu:
ORA-00904: "C"."CLIENTCUSTOMERREFNO": niepoprawny identyfikator

Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: [Oracle] kłopotliwe pod-podzapytanie

No to fajnie, że nas o tym informujesz, ale co chesz osiągnąć? ;-)

Domyslam się, że wyciągnąć jakieś dane z jakichś tabelek. Fajnie jakbyś podał jakie są relacje między tymi tabelami (klucze główne, obce) i co chcesz uzyskać.

Podejrzewam, że da się to napisać prościej niż niż podpodzapytanie.

Temat: [Oracle] kłopotliwe pod-podzapytanie

Dobra dało radę, robiłem port z T-SQL na Oracle.

Widocznie nie można w oracle się tak zagłębiać, ale też nie trzeba dodatkowych rzeczy robić dla rownumów jak w Transact-SQL ;)


select rownum, sysdate, c.udf_citi_status, (select udf_personal_id from ika_debtor d where d.contactid = c.debtorid), c.clientcustomerrefno,'','N','N',
( select comm.value from ika_Communication comm
JOIN ika_CommunicationMeans cme ON comm.COMMUNICATIONMEANSID=cme.ID
where comm.ContactID=c.debtorid AND comm.Active=1 AND comm.memo = C.CLIENTCUSTOMERREFNO AND cme.Designation IN ('Telefon','Telefon komórkowy') and rownum = 1
) as Telefon1
from ika_ccase c
where c.clientno = '6500' and substr(c.udf_citi_status,length(c.udf_citi_status)) in ('3','4') and c.subcase = '0'

Adam H.

Adam H. Analityk Integracji
Systemów/Analityk
Systemowy

Temat: [Oracle] kłopotliwe pod-podzapytanie

To zapytanie jest totalnie nieczytelne, nie dosc ze brak jakichkolwiek wciec, to mieszasz leksykalny zapis zlaczenia ze znakiem rownosci, mieszasz bez potrzeby zlaczenie z podzapytaniem, tyfus. Podanie samego ORA to nie wszystko, podaje sie tez wiersz, przy ktorym sie zaczal.

Temat: [Oracle] kłopotliwe pod-podzapytanie

@Adam nie do końca rozumiem jak Ty widziałbyś to zapytanie.
To była zrobiona konstrukcja na szybko.
Jeśli możesz proszę pokaż jak powinno to wyglądać.
Być może przyda się komuś, kto będzie szukał info na tym forum.
Ja też chętnie zapoznam się z Twoja koncepcją.

Pozdrawiam:)



Wyślij zaproszenie do