Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa LIKE upitom

[es] :: Pascal / Delphi / Kylix :: Problem sa LIKE upitom

[ Pregleda: 2475 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
79.101.211.*



+2 Profil

icon Problem sa LIKE upitom25.11.2008. u 08:50 - pre 186 meseci
@MODERATORI
Da li da postavim ovo pitanje ovde ili da otvorim temu?



Imam ovaj upit koji treba da vrsi pretragu tabele

Code:

select * from T_TABELA 
where KNJIGOVOSTVENA_SIFRA like '%%'
and SIFRA_PROIZ like '%%' 
and NAZIV like '%%' 
and TIP_LICA like '%%' 
and NACIN_VODJENJA like '%%' 
and TIP_TOVA like '%%' 
and REG_BROJ_GAZDINSTVA like '%%' 
and BROJ_POR_RESENJA like '%%' 
and MATICNI_BROJ like '%%' 
and POST_BROJ like '%%' 
and MESTO like '%%' 
and ADRESA like '%%'


Problem je sledeci,ako je zapis u tabeli takav da se ne unesu svi podaci upit ga ignosise,cak bez unetih uslova,upit vraca samo zapise koji imaju sve podatke unete...kako ja kapiram ...kad nista nije uneto ovaj upit bi trebalo da ignorise where uslov,ali on to ne radi..
Pitanje:Gde gresim?Kako da resim problem?
Da napomenem probao sam umesto and da stavim or ali onda ne radi NISTA!!!
Don't worry be happy
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 12:00 - pre 186 meseci
> @MODERATORI
> Da li da postavim ovo pitanje ovde ili da otvorim temu?

U posebnu naravno, ako otvaraš novo pitanje onda treba i nova tema. Uradio sam to ja sada.

> select * from T_TABELA
> where KNJIGOVOSTVENA_SIFRA like '%%'

Dovoljan je jedan %.

> Problem je sledeci,ako je zapis u tabeli takav da se ne unesu svi podaci upit ga ignosise,cak bez unetih uslova,upit vraca samo zapise koji
> imaju sve podatke unete...kako ja kapiram ...kad nista nije uneto ovaj upit bi trebalo da ignorise where uslov,ali on to ne radi..

Imaš li NULL slogove u tabeli? Ako da, onda POLJE LIKE '%' neće ništa vratiti jer NULL nije vrednost već stanje. Moraš koristiti:
1) COALESCE(POLJE, '') LIKE '%'
2) (POLJE LIKE '%' OR POLJE IS NULL)
 
Odgovor na temu

sasaz2008

Član broj: 200415
Poruke: 204
*.vdial.verat.net.



+4 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 12:02 - pre 186 meseci
U LIKE klauzuli znak '%' zamenjuje deo stringa. Npr.:

IME
-------
PERA
MIKA
LAZA
MILAN

SELECT ....
WHERE IME LIKE 'MI%'

Gornji upit daje slogove u kojima sadržaj polja IME počinje MI, a to su MIKA i MILAN.

SELECT ....
WHERE IME LIKE '%I%'

Ovaj upit daje slogove u kojima sadržaj polja IME sadrži slovo 'I', a to su u ovom slučaju ponovo MIKA i MILAN.
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
79.101.211.*



+2 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 12:16 - pre 186 meseci
HVALA RESIO SAM PROBLEM!!!
Ubacio sam
or polje is null i reseno
Don't worry be happy
 
Odgovor na temu

sasaz2008

Član broj: 200415
Poruke: 204
*.vdial.verat.net.



+4 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 12:37 - pre 186 meseci
>Ubacio sam or polje is null i resen

Upit je u ovom slučaju i previše komplikovan. Uzgred, da li se ovakvi upiti dinamički kreiraju iz Delphi koda ili je ovo samo teoretski postavljeno pitanje? Kako Igor reče, NULL je stanje ne vrednost, i za ovakve (osnovne) tabele se obično za polja dodaje NOT NULL pri kreiranju same tabele.
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
79.101.211.*



+2 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 13:11 - pre 186 meseci
@sasaz
Da upit se dinamicki kreira iz Delphija i izmedju %% stavljam edit.tex,tako ada mi nije bas nanjjasnije
ovo?
>>COALESCE(POLJE, '') LIKE '%' (POLJE LIKE '%' OR POLJE IS NULL)
Gde bi se u ovom slucaju opisalo edit.tex?
Don't worry be happy
 
Odgovor na temu

sasaz2008

Član broj: 200415
Poruke: 204
*.vdial.verat.net.



+4 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 13:59 - pre 186 meseci
> Da upit se dinamicki kreira iz Delphija i izmedju %% stavljam edit.tex,tako ada mi nije bas nanjjasnije ovo?

U slučaju dinamičkog kreiranja upita, upit u prvom postu bi se sveo na običan SELECT bez WHERE klauzule pošto za njom nema potrebe, odnosno onoliko LIKE koliko je zaista i neophodno. T.j., za svako edit polje u formi koje korisnik popunjava radi fleksibilne pretrage, dodaje se u provremenu promenjivu ta LIKE konstrukcija ukoliko korisnik to zaista zahteva (tj. nije prazno). Time je odziv neuporedivo brži i izbegava se nepotrebno korišćenje ostalih LIKE klauzula.

Drugo, upotrebom NOT NULL u opisu svih polja osnovnih tabela, koja u većini slučajeva sva moraju imati vrednosti, izbegava se komplikacija sa IS NULL. Naravno, sve to zavisi od zahteva.
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
79.101.211.*



+2 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 14:12 - pre 186 meseci
Lepo to zvuci aj postavi neki primer kako to funkcionise..
Don't worry be happy
 
Odgovor na temu

sasaz2008

Član broj: 200415
Poruke: 204
*.vdial.verat.net.



+4 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 14:55 - pre 186 meseci
> Lepo to zvuci aj postavi neki primer kako to funkcionise..

Primer je suvišan, ali ukratko, nešto poput:
Code:

Var
  upit, kl,s: string;

begin
  upit:='SELECT * FROM T_TABELA ';
  kl:='';

  s:=trim(edit1.text);
  if s<>'' then 
  begin
    if kl<>'' 
       then kl:=kl+' and ';

    kl:=kl+ [naziv polja] + 'LIKE ''%'+s+'''%''  // i sl. uz IS NULL po potrebi

  end;  //tako i za ostala edit polja

  if kl<>'' then 
       upit := upit + 'WHERE '+ kl
...



Tabela gde sva polja moraju imati vrednosti bi izgledala ovako:
Code:

CREATE TABLE T_TABLE (
  ID ...
  KNJIGOVOSTVENA_SIFRA VARCHAR(10)  NOT NULL,
  ... itd


[Ovu poruku je menjao sasaz2008 dana 25.11.2008. u 16:37 GMT+1]
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
79.101.211.*



+2 Profil

icon Re: Problem sa LIKE upitom25.11.2008. u 15:41 - pre 186 meseci
@sasaz
HVALA znacice mi ovaj primer
Don't worry be happy
 
Odgovor na temu

mehanizamm
Vranje

Član broj: 82537
Poruke: 88
*.adsl-a-1.sezampro.yu.



Profil

icon Re: Problem sa LIKE upitom28.12.2008. u 14:30 - pre 185 meseci
Problem ne razumem..
Koristim lazarus i pocetnik sam..

ovako glasi mysql upit..

SELECT * FROM tabela1 WHERE ime LIKE 'mi%';

e sad kako taj isti upit da napisem u lazarusu

SQLQuery1.SQL.Text := 'SELECT * FROM tabela1 WHERE ime LIKE mi%';

tj da na mi% dodam apostrofe?? KAKO??

 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Problem sa LIKE upitom28.12.2008. u 16:58 - pre 185 meseci
> SQLQuery1.SQL.Text := 'SELECT * FROM tabela1 WHERE ime LIKE mi%';
> tj da na mi% dodam apostrofe?? KAKO??

Pokušaj: SQLQuery1.SQL.Text := 'SELECT * FROM tabela1 WHERE ime LIKE ''mi%''';
 
Odgovor na temu

mehanizamm
Vranje

Član broj: 82537
Poruke: 88
*.adsl-a-1.sezampro.yu.



Profil

icon Re: Problem sa LIKE upitom28.12.2008. u 17:33 - pre 185 meseci
Resio sam problem...

SQLQuery1.SQL.Text := 'SELECT * FROM tabela1 WHERE ime LIKE' + QuotedStr('mi%');

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Problem sa LIKE upitom

[ Pregleda: 2475 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.