[ prginfo @ 28.05.2010. 07:24 ] @
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.
[ prginfo @ 28.05.2010. 10:15 ] @
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.
[ savkic @ 28.05.2010. 11:30 ] @
> 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%'
[ captPicard @ 28.05.2010. 11:44 ] @
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]