• 3 odgovora
  • 2.253 pregleda
SQL upit, IB, D2007 28.05.2010. u 07:24 · pre 199 meseci #1
Koristim D2007 i IB.

Potrebna mi je pomoc oko sintakse za SQL upit u kodu. Problem je u sledecem:

1.
stavio sam u OnChange edit kontrole sledece

Query.Close;
Query.SQL.Clear;
Query.SQL.Add('select * from TABELA where UPPER(POLJE1) like ' +QuotedStr('%'+UpperCase(editPOJAM.Text)+'%' )+ ' order by POLJE2');
Query.Prepare;
Query.Open;

E sada, ako imam vrednosti u bazi za POLJE1 npr. Nenad Mitrovic i Jamica i kucam u editPOJAM mi, prikazace mi se oba pojma zato sto sadrze mi, prvo Jamica, a potom Nenad Mitrovic.
Meni je potrebno da se prvo prikaze Nenad Mitrovic a potom Jamica, po logici da se uzimaju pojmovi koji sadrze mi, ali, ako neki pojam ima razmak pa mi, kao sto je Mitrovic da prvo prikaze njega, pa onda ostalo.

2.
u SQL sam stavio order by POLJE2. Ako su moguce vrednosti za POLJE2 u bazi npr. 1,2,3,4 ili 5 rezultati ce se sortirati po principu prvo slogovi koji imaju 1, pa 2, pa 3, pa 4, pa 5.

E sada opet, da li postoji varijanta da neko kazem sledece:

Sortiraj po POLJE2, s tim, sto provo prikazuj ono sto ima vrednost 2, pa onda ostalo redom, sto bi znacilo da sortira sledecim redom:

2,1,3,4,5

Unapred se zahvaljujem.
Re: SQL upit, IB, D2007 28.05.2010. u 10:15 · pre 199 meseci #2
Deo pod tačkom 2. sam rešio na sledeći način:

select * from TABELA where UPPER(POLJE1) like ' +QuotedStr('%'+UpperCase(editPOJAM.Text)+'%' )+ ' order by decode (POLJE2, '2',1,2), POLJE2, POLJE1

Ovako se sortira prvo po POLJE2, s tim što se prvo ispisuju slogovi gde je vrednost 2, a potom sve ostalo. Posle toga, drugi deo sortiranja ide po POLJE1.

Ovo radi ok.

DA LI NEKO IMA IDEJU ZA TAČKU 1.
PUNO BI MI ZNAČILO.

HVALA.
Re: SQL upit, IB, D2007 28.05.2010. u 11:30 · pre 199 meseci #3
> potom Nenad Mitrovic. Meni je potrebno da se prvo prikaze Nenad Mitrovic a potom Jamica, po logici da se uzimaju pojmovi koji sadrze mi, ali, ako neki pojam ima razmak pa mi,
> kao sto je Mitrovic da prvo prikaze njega, pa onda ostalo.

Možeš iskombinovati preko UNION, npr:
Code:

SELECT
  NAME
FROM
  TABELA
WHERE
  NAME LIKE '% %MI%'
UNION ALL
SELECT
  NAME
FROM
  TABELA
WHERE
  NAME LIKE '%MI%' AND
  NAME NOT 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: SQL upit, IB, D2007 28.05.2010. u 11:44 · pre 199 meseci #4
Nisam probao, ali da možda probaš ovako nekako:

zanemari, nisam dobro postavio problem :) a i viidm da je kolega gore dao odgovor

[Ovu poruku je menjao captPicard dana 28.05.2010. u 13:16 GMT+1]
Potpis
F
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme