Field
Host ->Integer;
Type ->Integer;
New ->Integer;
DateTime -> TDateTime;
Index
PriIdx ->(Host,Type)
NewIdx ->(New)
DateIdx ->(DateTime)
대충 이런형태의 테이블을 구축했습니다.
1]
여기서 그리드에 디스플레이할때 Host=0 and Type =1
그리고 New로 정렬하고 싶습니다.
2]
Host=0 and Type =1 Ascending(DateIdx)
위의 1과 2의 형태로 Query를 작성하려고 합니다.
어떤식으로 SQL를 만들어야합니까.
그리고 인덱스를 어떤식으로 쭤야합니까.
제 질문이 두서가 없더라도 이해해주시기 바랍니다.
델 왕초보가.
> Field
> Host ->Integer;
> Type ->Integer;
> New ->Integer;
> DateTime -> TDateTime;
> Index
> PriIdx ->(Host,Type)
> NewIdx ->(New)
> DateIdx ->(DateTime)
> 대충 이런형태의 테이블을 구축했습니다.
>
> 1]
> 여기서 그리드에 디스플레이할때 Host=0 and Type =1
> 그리고 New로 정렬하고 싶습니다.
>
> 2]
> Host=0 and Type =1 Ascending(DateIdx)
>
> 위의 1과 2의 형태로 Query를 작성하려고 합니다.
> 어떤식으로 SQL를 만들어야합니까.
> 그리고 인덱스를 어떤식으로 쭤야합니까.
>
> 델 왕초보가.
>
>
질문의 요지가 Host필드값이 0 이고 Type필드값이 1 인 레코드들을 New필드값으로 정렬을 한다는 말인가요?
제가 문제 파악을 제대로 했다면...
with query1 do begin
close;
sql.clear;
sql.add('select * from 연결DB명');
sql.add('where 검색조건');
sql.add('order by 정렬할 필드명');
open;
end;
이런식으로 구현하면 됩니다.
where 다음의 조건문에 Host=0 and Type=1 이라는 조건문을 대입하시면 되고요.
Order by 다음에 정렬할 필드명이 오니까 New라고 기입해주시면 될것 같습니다.
Query컴포넌트를 연결하여 SQL의 Order by문으로 정렬을 할 때는 해당 필드가 인덱스로 잡혀있지 않아도 가능합니다.
물론 table 컴포넌트를 사용할 경우에 정렬을 시킬때는 프라이머리키나 세컨더리인덱스로 잡혀있어야만 정렬할 수 있습니다.