Citat:
Brkic: @darko_sudarov
Napravio sam proceduru,ne izbacuje gresku,pogresio sam sa q.open i q.ExecSQL jer sam imao 'try except' ali napretka nema.Vreme izvrsavanja je isto,pomirio sam se da ne moze brze mada je smesno sa 6.000 rekorda,koliko ce vremena trebati sa 100.000 rekorda.
q.SQL.Clear;
q.SQL.Add('CREATE INDEX prom_ime on promene(ime)');
q.ExecSQL;
Mislim da je Savkić mislio na Stored procedure, a ne na proceduru u Delphiju?! Inače, mislim da je malo bezveze kreirati bazu kroz Delphi kod, pogotovo dok experimentišemo. Uzmi lepo neki alat, IBExpert personal na primer koji je džaba, i onda lepo u njemu kreiraš tabele i indexe, i testiraš brzinu upita. Ako to radimo sve iz Delphija, onda nismo načisto da li je greška u brzini upita, ili u načinu na koji koristiš komponente!
Baza ti nije normalizovana, imena treba da su ti u posebnoj tabeli, a u ove dve tabele (ulaz i prom) da imaš samo ključ te tabele.
Proveri da li si napravio index na polje IME u obe tabele, a treba ti i index na polje BR u obe tabele.
Citat:
i jos jedno pitanje u veze selekcije
SELECT P1.ime,p1.br FROM ulaz P1 WHERE SINGULAR( SELECT ime,br FROM prom P2 WHERE P2.ime = P1.ime and p2.br<>p1.br)
radi OK,izbaci sve koji imaju razlicit 'br' ali trebalo bi mi i da izbaci vrednost p2.br za to ime, probavao sam drugacije ali ne ide,nece.
A kako da ti izbaci p2.br kad to nisi naveo u selectu?
Citat:
SELECT P1.ime,p1.br,p2.br FROM ulaz P1,p2 ...
znaci trebalo bi mi da izbaci ista imena sa razlicitim brojevima iz 2 tabele formata ime,br1,br2
moze li pomoc
Probaj ovako nešto:
Code:
select p1.ime, p1.br, p2.br
from ulaz p1
inner join prom p2 on (p2.ime=p1.ime and p2.br<>p1.br)
Sa sledećim podacima u tabeli:
Table ULAZ
IME BR
----------
tito 1
tito 2
Table PROM
IME BR
----------
tito 1
tito 10
tito 11
Dobiješ ovaj rezultat:
IME BR BR1
-------------
tito 1 10
tito 1 11
tito 2 1
tito 2 10
tito 2 11
Ako to nije rezultat, onda molim te napiši koji rezultat očekuješ na ove podatke.