[ vukan031 @ 14.07.2015. 10:34 ] @
Aplikacija rađena u Delphi 7, baza Mysql, Zeos komponente. Prilikom prikaza podataka u grid pojavljuju se zapisi više puta. U samoj tabeli u bazi je sve u redu, sa SELECT odradi i prikaže tačan broj zapisa, međutim u gridu komponenta zquery sa istom komandom SELECT prikaže zapise po dva ili tri puta. Ima li neko ideju šta može biti u pitanju. Hvala
[ captPicard @ 14.07.2015. 12:06 ] @
Daj točan SQL upit.
[ vukan031 @ 14.07.2015. 12:17 ] @
Običan select, na primer SELECT * FROM REZERVISANOKOZA WHERE BRTREBOVANJA = nalog AND PODBROJK = pbroj AND GODK = god i na gridu izzađe prv slog dva puta a ukoliko ima više slogova ponove se i drugi jednom ili više puta. Na direktan upit u mysql konzoli rezultat bude dobar.
[ komplikator @ 15.07.2015. 07:51 ] @
A ako staviš dbnavigator i dbedit kontrole, ili ako prođeš nekom petljom kroz recordset daje li opet duple slogove?
Koji grid, obični TDdBGrid ili neki "vanjski"?
[ Rapaic Rajko @ 15.07.2015. 08:25 ] @
Ubaci rec DISTINCT u SELECT.
Ako grid tada pokaze kako treba, onda stvarno imas duple slogove u bazi. Ali je onda nejasno zasto upit u MySQL konzoli daje dobre podatke; mozda konzola po default-u radi sa DISTINCT opcijom..?

Pozz
[ vukan031 @ 15.07.2015. 11:53 ] @
Probao sa navigatorom i dbedit ista stvar, koristim običan tdbgrid, i stavljao sam DISTINCT u upit REZULTAT JE ISTI. Proba sam i sa brisanjem tabela u bazi i kreiranjem novih bez rezultata. Da li može biti neka greška sa kontrolama za pristup tabelama (tdatasource). I to sam brisao i kreirao ponovo bez rezultata. Sve je ovo funkcionisalo bez grešeke do pre mesec dana i onda se nešto desilo....
[ savkic @ 15.07.2015. 12:03 ] @
Ako je radilo onda je nesto promenjeno i ako nemas duplikate kada query startujes iz konzole onda je nesto do Zeos kontrola. Probaj neku drugu verziju ili proveri da nisi ukljucio neki properti koji moze izazvati takav efekat.
[ FranjoZG @ 15.07.2015. 12:34 ] @
Da nemaš u selectu
Code:
 JOIN ... 

?
[ captPicard @ 15.07.2015. 13:06 ] @
Probaj samo ovo staviti u upit i vidi da li i onda daje duple redove

Code:
SELECT * FROM REZERVISANOKOZA
[ vukan031 @ 15.07.2015. 13:40 ] @
Nema JOIN u upitu, a upit sa samo SELECT daje ispravan odgovor bez duplih. Sa WHERE argumentom kada imaju dva sloga obavezno prvi prikaže dva puta a sa više slogova duplira i ostale.
[ savkic @ 15.07.2015. 15:51 ] @
Malo si konfuzan sa odgovorima, kazes da taj kveri kada se proba u consoli ne vraca duplirane rezultate i da obican select ne daje duple rezultate dok kveri sa where daje (BTW kveri u kome nema [eksplicitnog] joina ne znaci da doista i nema [implicitnog] joina).

Stvar je vrlo jednostavna, u konzoli probas identican (u slovo identican) kveri i vidis da li ima dupliranih, ako nema onda je problem u zeos komponenti (ili gridu), i tu moze biti bug u samoj komponenti (zato treba da probas neku drugu verziju) ili je to neki feature (zato treba da proveris propertije koji su ukljuceni i da probas novi, potpuno prazan projekat).
[ captPicard @ 16.07.2015. 09:53 ] @
Ako čisti select daje dobre rezultate, lako moguće da je problem u where uslovu. Poigraj se kako je kolega savkic predlozio.

edit: prvo šta vidim je npr. godk. Da ti ne ostane taj parametar prazan u aplikaciji, pa ti uzima npr. 3 godine ali ti to ne vidiš u gridu.