Description:
Find a record from an entity table/multizone composite table according to the specified primary key value.
Syntax:
T.find(k;x:C,..)
Note:
The function gets the record whose primary key value is k from an entity table or a multizone composite table and returns a record consisting of field C or all fields if parameter C is absent. The key value k can be represented by the first dimension value which can uniquely identify the record.
When T has the time key, the function finds the record whose time key value is not greater than the largest of k values among those that share same basic key value. Use now() to get the current time if no time key is written in parameter k.
Parameter:
T |
An entity table or a multizone composite table |
k |
The key value; write multiple key values as a sequence; time key value is allowed |
x |
Column name; retrieve all field if omitted |
C |
Column alias; can be omitted |
Option:
@k |
Find multiple records according to multiple primary key values and return them as a record sequence; by default the function returns the first-found record whose primary key is k ; to search for multiple records according to a composite primary key, write parameter k in the format of [[k1,k2],[...],...] |
Return value:
A record/record sequence
Example:
When T is the base table:
|
A |
|
1 |
=file("E:/find1.ctx") |
Return a cursor. |
2 |
=A1.open() |
Open a composite table’s base table whose dimensions are EID and NAME. |
3 |
=A2.find([8,"Megan"]) |
Since parameter x is absent, the function returns all columns.
|
4 |
=A2.find([8,"Megan"];EID,SALARY) |
Return specified columns.
|
5 |
=A2.find@k([[4,"Emily"], [8,"Megan"]];EID,SALARY) |
Find multiple records with @k option.
|
When T is an attached table:
|
A |
|
1 |
=file("ctb.ctx").open() |
Open a composite file. |
2 |
=A1.attach(table2) |
Return attached table table2 in the composite table. |
3 |
=A2.find(1,2) |
Get records whose primary key values are 1 and 2 respectively from A2’s attached table.
|
4 |
=A2.find@k([[1,2],[3,6]]) |
Use @k option to find multiple records.
|
When entity table/multizone composite table T has the time key:
|
A |
|
1 |
=demo.cursor("select top 10 STATE,HIREDATE,EID,NAME from EMPLOYEE ").sortx(STATE,HIREDATE) |
|
2 |
=file("ef.ctx") |
|
3 |
=A2.create@yt(#STATE,#HIREDATE,EID,NAME) |
Create a composite table, where STATE is the basic key and HIREDATE is the time key. |
4 |
=A3.append@i(A1) |
Append cursor A1’s data to the composite table’s base table, and below is the latter’s content:
|
5 |
=A4.find(["Texas",date("2006-03-12")]) |
Find the record that has the largest time key value among records whose time key values are not greater than 2006-09-12 within records where STATE is “Texas”.
|
6 |
=A4.find("Texas") |
Use now() to calculate the time key value, which is the latest date.
|
When entity table/multizone composite table T is a multizone composite table:
|
A |
|
1 |
=connect("demo").cursor("select EID,NAME,GENDER from employee") |
Return a cursor. |
2 |
=file("ef.ctx":[1,2]) |
Define a homo-name files group: 1.ef.ctx and 2.ef.ctx. |
3 |
=A2.create@y(#EID,NAME,GENDER;if(GENDER=="F",1,2)) |
Create a multizone composite table, set EID as its key, and put records where GENDER is F to 1.ef.ctx and the other records to 2.ef.ctx. |
4 |
=A3.append@ix(A1) |
Append cursor A1’s data to A3’s multizone composite table. |
5 |
=A4.find(3) |
Get the record whose primary key value is 3 from A4’s multizone composite table, retrieve all fields as parameter x is absent, and return the following record:
|
6 |
=A4.find(3;NAME) |
Get the record whose primary key value is 3 from A4’s multizone composite table, retrieve NAME field only, and return the following record:
|
7 |
=A4.find@k([3,6]) |
Use @k option to search for multiple records and result is as follows:
|