T.find( k;x:C,.. )

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: