26. november 2004 - 13:07Der er
11 kommentarer og 2 løsninger
Hvordan findes nummerrækkefølge??
Hejsa
Er der noget der ved hvordan man finder en nummerrækkefølge i en tabel?? Det jeg skal finde er, at når der er 10 numre der er fortløbne, så skal de vises.
og en anden ting. Hvis det er en varchar tabel, hvordan skal det så gøres?? Er dette her den rigtige måde?? connect by no=prior (to_number(no))+1 start with (to_number(no))=1
Det kommer an på om din where clause skal gælde for startpunkt (start with) og/eller for hver række i resultatet, dvs. de fortløbende numre.
fx
select 'true' from dual where 10 <= (select count(no) from test connect by no=prior no+1 start with no=1 and enstartkolonne = 'starther')
eller
select 'true' from dual where 10 <= (select count(no) from test where entestkolonne = 'aktiv' connect by no=prior no+1 start with no=1)
hvis din nummer-kolonne er varchar (hvorfor er den det, hvis den indeholder et tal?) så kan du godt bruge to_number
connect by to_number(no)=prior to_number(no)+1 start with to_number(no)=1
men så vil Oracle ikke kunne bruge et evt. index på denne kolonne. Du kan så bruge et function-based index, men alt andet lige, så bør et numerisk felt ligge i en numerisk kolonne.
Nu har jeg prøvet at køre det, men jeg får intet resultat. Det kan være, at jeg bare er utålmodig, men nu har scriptet kørt i ca. 2-3 timer, og der er ikke kommet noget ud af det endnu. Der er ca. 450000 rækker i tabellen, så det er jo ikke overvældende.
Desværre kan jeg ikke svare dig, på hvorfor kolonnen er en varchar, men jeg tror, at det er dem, som har lavet min database, som har lavet en fejl.
Nu er der kommet et resultat, og det er bare "true".
Her er statementet, som jeg kører: select 'true' from dual where 10 <= (select count(phonenumber) from phonenumber where state = 1 and category = 1025 connect by to_number(phonenumber)= prior to_number(phonenumber)+1 start with to_number(phonenumber) = 50500000)
nu var det jo ligesom sådan , at jeg også gerne ville have vist disse numre :-) jeg fandt selv en løsning nu:
select substr(phonenumber,1,7),count (*) numre from cbb_phonenumber where state = 1 and phonenumber like '505%' group by substr(phonenumber,1,7)
Så har jeg bare taget de ca 63 numre, som der er 10 stk numre i. Takker for inputs. Olet - du får 15 points, da du jo har brugt tid på det, og har hjulpet mig i den rigtige retning.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.