Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 12 odgovora
  • 3.519 pregleda

Najnovija ↓

Problem sa LIKE upitom 25.11.2008. u 09:50 · pre 218 meseci #1
@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!!!
Potpis
Don't worry be happy
Re: Problem sa LIKE upitom 25.11.2008. u 13:00 · pre 218 meseci #2
> @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)
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Problem sa LIKE upitom 25.11.2008. u 13:02 · pre 218 meseci #3
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.
Re: Problem sa LIKE upitom 25.11.2008. u 13:16 · pre 218 meseci #4
HVALA RESIO SAM PROBLEM!!!
Ubacio sam
or polje is null i reseno
Potpis
Don't worry be happy
Re: Problem sa LIKE upitom 25.11.2008. u 13:37 · pre 218 meseci #5
>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.
Re: Problem sa LIKE upitom 25.11.2008. u 14:11 · pre 218 meseci #6
@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?
Potpis
Don't worry be happy
Re: Problem sa LIKE upitom 25.11.2008. u 14:59 · pre 218 meseci #7
> 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.
Re: Problem sa LIKE upitom 25.11.2008. u 15:12 · pre 218 meseci #8
Lepo to zvuci aj postavi neki primer kako to funkcionise..
Potpis
Don't worry be happy
Re: Problem sa LIKE upitom 25.11.2008. u 15:55 · pre 218 meseci
izmenjeno 1 put, poslednji put sasaz2008 25.11.2008. u 16:37
  1. sasaz200825.11.2008. u 16:37zapis iz teksta poruke
#9
> 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
Re: Problem sa LIKE upitom 25.11.2008. u 16:41 · pre 218 meseci #10
@sasaz
HVALA znacice mi ovaj primer
Potpis
Don't worry be happy
Re: Problem sa LIKE upitom 28.12.2008. u 15:30 · pre 217 meseci #11
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??

Re: Problem sa LIKE upitom 28.12.2008. u 17:58 · pre 217 meseci #12
> 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%''';
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Problem sa LIKE upitom 28.12.2008. u 18:33 · pre 217 meseci #13
Resio sam problem...

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

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme