INTRODUCTION TO PEOPLESOFT QUERY AGENDA Overview People Soft

  • Slides: 115
Download presentation
INTRODUCTION TO PEOPLESOFT QUERY

INTRODUCTION TO PEOPLESOFT QUERY

AGENDA • • • Overview People. Soft Query Running Queries Writing Queries Advanced Topics

AGENDA • • • Overview People. Soft Query Running Queries Writing Queries Advanced Topics – Multiple Table Queries – Prompted Queries

GROUND RULES • Frequently we’ll be navigating together as a class in order to

GROUND RULES • Frequently we’ll be navigating together as a class in order to all see the same screens at the same time – Don’t go exploring on your own – Let me know immediately if you are having trouble navigating to the next page • I’ll let you know when you can go ahead on your own

OVERVIEW • People. Soft Query – Basic ad hoc reporting tool – Allows you

OVERVIEW • People. Soft Query – Basic ad hoc reporting tool – Allows you to write ad hoc queries and run queries shared by others – Allows data to be extracted to Excel or in other formats – A more powerful version is available, but requires the People. Soft windows client component. • HRIS staff • Advanced Query users • Online Reference: – http: //peoplesoft. oxy. com: 88/hrbooks/eng/psbooks/tpsq/ book. htm – Chapter 7 - Using Query Manager on the Web

BASIC QUERY • Six steps to creating a basic query – Select the record(s)

BASIC QUERY • Six steps to creating a basic query – Select the record(s) (data tables) – Select the data field(s) – Set the query preferences – Edit the field properties – Save the query – Run the query

PEOPLESOFT SANDBOX • We’ll be developing our queries in the People. Soft Sandbox database.

PEOPLESOFT SANDBOX • We’ll be developing our queries in the People. Soft Sandbox database. (GLB% will use the LTC DB) • This is a sample database supplied by People. Soft to allow us to get familiar with the People. Soft application. • Safer environment for query testing than the conversion database. • http: //peoplesoftdr. oxy. com: 88/servlets/iclientservlet/hr 83 ltc/? cmd=login • User. ID Your. ID and Your Password • http: //peoplesoftdr. oxy. com: 88/servlets/iclientservlet/hr 83 snd/ • User. Id PS and Password PS

SAVED QUERY • You can access and run queries that you or others have

SAVED QUERY • You can access and run queries that you or others have saved in the past – Public Queries are queries that you or others have saved – Private Queries are queries that you have saved • When using a Public Query, – Always save the query under a new name before making any changes if you did not create the query – OK to Run a Public Query without saving it under another name

Using a Saved Query • Follow along with me on this exercise • Navigate

Using a Saved Query • Follow along with me on this exercise • Navigate to Home > People. Tools > Query Manager > Use > Query Manager • Enter OX_EE in the Search For box • Click on Search button

 • Note: – – the list of query names & descriptions Ownership (Public

• Note: – – the list of query names & descriptions Ownership (Public or Private) Delete, Rename and Run hyperlinks You can open an existing query

 • You can open an existing query by clicking on the query name

• You can open an existing query by clicking on the query name hyperlink • Do not delete or rename a query created by another person • Click on OX_EE

 • This takes us to the Field tab of the query • We’ll

• This takes us to the Field tab of the query • We’ll take a closer look at this later • Click the Run button

Query Results • Click on Excel Spread. Sheet hyperlink

Query Results • Click on Excel Spread. Sheet hyperlink

 • Wow! • You can now format your report as you normally would

• Wow! • You can now format your report as you normally would with any other Excel spreadsheet, save the report or e-mail it to another person. • Close the window

Create New Query • Follow along with me on this exercise • Navigate to:

Create New Query • Follow along with me on this exercise • Navigate to: People. Tools > Query Manager > Use > Query Manager • Click on Create New Query

Record Selection • The first step is to select a record • Note search

Record Selection • The first step is to select a record • Note search options – Search In – Search Type • Enter Personal in the search box to find the Personal Data record

– – Folder icon to display fields Record name description Add record hyperlink to

– – Folder icon to display fields Record name description Add record hyperlink to select the record for this query Locate PERSONAL_DATA, click Add Record

 • Note – – – Folder icon Alias Record Hierarchy Join Minus Button

• Note – – – Folder icon Alias Record Hierarchy Join Minus Button • Choose Fields – – Checkbox Key Symbol Field Add Criteria button – Join Record Name

Select the Fields • Select the checkboxes for the following fields: – EMPLID –

Select the Fields • Select the checkboxes for the following fields: – EMPLID – NAME – ORIG_HIRE_DT – SEX Select the Fields tab

 • Col • Field • Format • Ord • XLAT • Agg •

• Col • Field • Format • Ord • XLAT • Agg • Heading Text • Add Criteria Button • Edit Button • Minus Button

Edit Field Properties • Locate the SEX field • Select Edit

Edit Field Properties • Locate the SEX field • Select Edit

Edit Field Properties • Locate the SEX field • Select Edit • Column Number

Edit Field Properties • Locate the SEX field • Select Edit • Column Number • Order By – Number – Descending • Heading – – – No Heading Text RFT Short RFT Long Heading Text Unique Field Name • Aggregate • Translate Value – None – Short – Long

Edit The Data Column Number: 3 Order By: 1 Heading: Text Heading Text: Gender

Edit The Data Column Number: 3 Order By: 1 Heading: Text Heading Text: Gender Aggregate: None Translate Value: Short Click OK

 • The SEX field has moved above the ORIG_HIRE_DT field, it is designated

• The SEX field has moved above the ORIG_HIRE_DT field, it is designated as the primary sort, will display the short translate value rather than a code and will display the column head as Gender • Edit a few more field properties for practice Edit field EMPLID Heading Text: Employee ID Order By: 1

 • Select the View SQL tab • The query tool automatically generates SQL

• Select the View SQL tab • The query tool automatically generates SQL (Structured Query Language) code for you. • SQL will look familiar to those of you who wrote queries in the past using QMF and is useful in troubleshooting problems with a query.

Saving Queries • Once you have created a query, you will need to save

Saving Queries • Once you have created a query, you will need to save it prior to running it. • Click SAVE • Enter – Query Name – Description – Owner • Private • Public

 • Enter Query Name: OX_LIST_INITIALS Description: General Info About Employees Owner: Private •

• Enter Query Name: OX_LIST_INITIALS Description: General Info About Employees Owner: Private • Click OK • Then click the Properties tab

 • The properties page allows you to maintain information related to the query

• The properties page allows you to maintain information related to the query – Query Name, Description and Owner defaulted from the Save Page – Query Type defaults to User – Distinct checkbox eliminates duplicate rows (current problem in Oxy People. Soft environment) – Query Definition allows further documentation about the query – Status Box displays the history of the last save of the query • Click Run to execute the query

 • Examine your data • Note the Download Results options • Close this

• Examine your data • Note the Download Results options • Close this window by clicking the “X” in the upper right corner

Key Points • There are six steps to creating a query – – –

Key Points • There are six steps to creating a query – – – Select the record(s) Select the data field(s) Set the query preferences Edit the field properties Save the query Run the query • For translate fields, the long or short descriptions can be displayed rather than the code • Queries can be saved as public or private • The SQL statement generated by a query can be viewed by selecting the View SQL tab

Individual Activity #1 You have been asked to produce a query that displays the

Individual Activity #1 You have been asked to produce a query that displays the hire and termination dates of all employees and eliminate duplicates. Record EMPLOYMENT Fields/Headings EMPLID Employee ID HIRE_DT Hire Date TERMINATION_DT Termination Date LAST_DATE_WORKED Last Date Worked SUPERVISOR_ID Supervisor ID Order by TERMINATION_DT descending Query Name HIRE_TERM_QRY

 • Did you remember to: – Change field headings – Order by termination

• Did you remember to: – Change field headings – Order by termination date in decending order • When discussion over, click New Query hyperlink

Individual Activity #2 You have been asked to produce an updated list of employees

Individual Activity #2 You have been asked to produce an updated list of employees emergency contacts. Record EMERGENCY_CNTCT Fields/Headings EMPLID Employee ID CONTACT_NAME Contact Name RELATIONSHIP Relationship (short translate description) PRIMARY_CONTACT Primary Contact PHONE Phone Order by EMPLID CONTACT_NAME Query Name EMER_CNTCTS

 • Did you remember to: – Change headings? – Use short translate value

• Did you remember to: – Change headings? – Use short translate value for Relationship? – Order by Empl. ID and Contact Name? • When discussion over, click New Query hyperlink

Selection Criteria • We will add criteria rows to a query to return specific

Selection Criteria • We will add criteria rows to a query to return specific rows of data • Compare fields to find data matching specified conditions

Selection Criteria Create a basic query to capture employee data and save the query

Selection Criteria Create a basic query to capture employee data and save the query without running it. Record PERSONAL_DATA Fields NAME EMPLID PER_STATUS (short description) ORIG_HIRE_DATE Order by NAME Query Name/Description CRITERIA Criteria for Employees

 • Did you remember to make the following field edits? – Change Name

• Did you remember to make the following field edits? – Change Name to the first field and sort by name? – Use the Short Name for the PER_STATUS translation type? – Name the query and give it a description? • When we are all ready, click the Criteria tab and then the Add Criteria button.

 • Choose Expression 1 Type – Used to specify what you are comparing

• Choose Expression 1 Type – Used to specify what you are comparing • Field • Expression • Note that your selection of Expression 1 Type changes the display for Expression 1 • Expression 1 – Select the field or expression you want to compare • Field • Expression • Next we’ll consider Condition Type

Condition Type Between Not between Equal to Not equal to Greater than Not greater

Condition Type Between Not between Equal to Not equal to Greater than Not greater than In list Not in list In tree Not in tree Is null Is not null Less than Not less than Like Not like

 • Check the different Expression 2 Types – Field – Expression – Constant

• Check the different Expression 2 Types – Field – Expression – Constant – Prompt • Click the Cancel button • Click the Query tab

 • Find the field: Sex • Click Add Criteria button

• Find the field: Sex • Click Add Criteria button

 • • Select condition type: equal to Expression type: Constant Expression 2: F

• • Select condition type: equal to Expression type: Constant Expression 2: F Click OK

 • You can apply criteria to fields that are not in the query

• You can apply criteria to fields that are not in the query output • You need to know how the data is stored in the database to ensure accurate results when the query is run • Click Save then Run to view the output

 • In addition to your current criteria, we now want to retrieve just

• In addition to your current criteria, we now want to retrieve just employees who have a first name, middle initial or last name that begins with the capital letter “D”. • From the Criteria page, click the Add Criteria Button

 • Select Expression 1 Type: Field • Expression 1 click Find Value prompt

• Select Expression 1 Type: Field • Expression 1 click Find Value prompt button • Select Name field from the list • Condition type: like • Expression 2 Type: Constant • Expression 2: %D% • The Like operator is case sensitive and uses wildcard characters to search for data • Wildcard characters are: % Any string of zero or more characters __ (underscore) Any single character • Click OK

 • Click Save • Note the And/Or drop down list • Click Run

• Click Save • Note the And/Or drop down list • Click Run

You now have a female employees who have a capital “D” in their name

You now have a female employees who have a capital “D” in their name

Individual Activity #3 Produce a list of all employees whose Business Title contains the

Individual Activity #3 Produce a list of all employees whose Business Title contains the word “Manager”. Also, only show those who were hired after 1989. Record EMPLOYMENT Fields EMPLID BUSINESS_TITLE HIRE_DT Order by HIRE_DT (descending) Query Name/ Description Business_Title Manager Business Title Query

Results

Results

Criteria page

Criteria page

Effective Date • Effective dated records are those records that contain the field Effdt.

Effective Date • Effective dated records are those records that contain the field Effdt. • The effective date provides a history of changes over time • There are three categories of effective date: History Rows of data where the effective date is less than the effective date of the current row. Current The row of data with the highest effective date/sequence number less than or equal to today’s system date. Future Rows of data where the effective date is greater than today’s system date.

Effective Date • Effective dates are used in a query as criteria. • When

Effective Date • Effective dates are used in a query as criteria. • When you start a new query and select an effectivedated record, a dialog will display informing you that an effective-date criteria row has been created

Effective Date • Click New Query • Record: JOBCODE_TBL • Click Add Record •

Effective Date • Click New Query • Record: JOBCODE_TBL • Click Add Record • Click OK in dialog box • Select the Criteria tab

 • Click the Edit button

• Click the Edit button

 • Four effective dated comparisons – – Effective Date <= Effective Date <

• Four effective dated comparisons – – Effective Date <= Effective Date < Effective Date >= Effective Date > • Do Not Use – First Effective Date – Last Effective Date – Between or Not Between

Individual Activity #4 Create a query that lists the last current job actions as

Individual Activity #4 Create a query that lists the last current job actions as of the current date for your employees. Record JOB Fields/Headings EMPLID ID DEPTID (column 2) Dept ID JOBCODE Job Code ACTION (short description) Action ACTION_REASON Reason EFFDT Effective Date LOCATION Location ANNUAL_RT Annual Rate Order by EMPLID Criteria Annual salary of $50, 000 or more (enter 50000) Compensation Frequency of monthly (Enter M) Query Name CUR_ACTION

Results

Results

Fields tab

Fields tab

Criteria Tab

Criteria Tab

Using Aggregate Functions • Five aggregate functions are available – Avg – Count –

Using Aggregate Functions • Five aggregate functions are available – Avg – Count – Max – Min – Sum

Sample Aggregate Query • Build a query to count the number of employees in

Sample Aggregate Query • Build a query to count the number of employees in the PERSONAL_DATA record – Record: PERSONAL_DATA – Fields: EMPLID – Query Name: EMPLNUM • Save and Run to see how many rows are returned

 • Now add the aggregate function to count the number of employees. –

• Now add the aggregate function to count the number of employees. – – – Click Fields tab Click Edit button Aggregate: Count Click OK Click Save Click Run

Advanced Topics • You can work on these exercises on your own if you

Advanced Topics • You can work on these exercises on your own if you are ready for these advanced topics – Multiple Table Queries – Prompted Queries

Multiple Table Queries • People. Soft Query Manager allows you to join data from

Multiple Table Queries • People. Soft Query Manager allows you to join data from more than one record • You can join up to three records using the web-based Query Manager

Tables and Views • Records listed in the Record Search may represent either a

Tables and Views • Records listed in the Record Search may represent either a table or a view. – A table physically stores specific data. – A view is a logical representation of data and may consist of data from multiple tables – Some views may already have criteria associated with them – Views can be considered to be pre-joined tables

Joins • A join allows you to retrieve data from two or more records

Joins • A join allows you to retrieve data from two or more records or specify criteria from more than one record • Whenever you perform a join, the records are linked based on common fields. • In Query, predefined joins can be generated as either a Hierarchichal join or a Related Record join. – You do not have to add any criteria for predefined joins in order to link the records.

Types of Joins Record Hierarch Related Record A Hierarchical join uses records that are

Types of Joins Record Hierarch Related Record A Hierarchical join uses records that are parents or children of each other. The hierarchical relationship is defined by the Parent Record in the Application Designer An example is joining employee personal data with dependent/beneficiary data. Related Record joins use records from non-hierarchical records that are related by a common field. For example, description tables for common codes are related records. This relationship is determined by the Prompt Table edit defined for a field in the Application Designer.

Join Example Create the following new query: Record TRN_INSTRCT_TBL Fields INSTRUCTOR_ID (short INTERNAL_EXTERNAL description)

Join Example Create the following new query: Record TRN_INSTRCT_TBL Fields INSTRUCTOR_ID (short INTERNAL_EXTERNAL description) CURRENCY_CD Order by INSTRUCTOR_ID

 • Fields tab • Return to the Query tab page

• Fields tab • Return to the Query tab page

 • Select the Hierarchy Join hyperlink to join records that share a common

• Select the Hierarchy Join hyperlink to join records that share a common highlevel key.

 • A new page will appear allowing you to select the record to

• A new page will appear allowing you to select the record to be joined to your existing query. • Click TRN_INSTRCT_CRS

 • Your newly joined record and its fields are displayed below the first

• Your newly joined record and its fields are displayed below the first record • Each record added is assigned an incremental letter alias • The second record states whith which record it was joined • Select Record B Field: Course • Click the Fields tab

 • • Note that the fourth column of data is B. COURSE Click

• • Note that the fourth column of data is B. COURSE Click Save Query Name: TRN_COURSES Click Run

 • Results • Close this page and return to the query tab

• Results • Close this page and return to the query tab

 • Your newly joined record appears below the others and has been given

• Your newly joined record appears below the others and has been given the alias of “C” • Select the Field: DESCR • Select the Field: COURSE_TYPE • Click the Fields tab

 • For Field COURSE_TYPE, edit XLAT: Long Description • Click Save • Click

• For Field COURSE_TYPE, edit XLAT: Long Description • Click Save • Click Run

 • Results

• Results

Prompted Queries • People. Soft Query allows you to build reports that contain runtime

Prompted Queries • People. Soft Query allows you to build reports that contain runtime prompts. • A runtime prompt allows you or another user to enter a value for a specific field at the time the query is run. • The report will display only those data rows that match the field entered at the prompt. • This makes the query dynamic, allowing it to be used over and over again for changing requirements.

Runtime Prompts Create the following query to retrieve employee disability election information. Record DISABILITY_BEN

Runtime Prompts Create the following query to retrieve employee disability election information. Record DISABILITY_BEN Fields EMPLID (short description) PLAN_TYPE COVERAGE_BEGIN_DT COVERAGE_ELECT BENEFIT_PLAN Order by EMPLID Query name DISABILITY (short description)

Your Fields tab should look like this. Save the query and run it

Your Fields tab should look like this. Save the query and run it

Results

Results

 • A prompt is simply a row of criteria and can be added

• A prompt is simply a row of criteria and can be added from two locations. • Click the Prompts tab • The Prompts tab can be used to add runtime prompts and display a list of all prompts that have been added to the query. • The criteria tab is the most common method of adding criteria and is useful when only adding one runtime prompt. • Click the Fields tab

 • For field PLAN_TYPE, click the Add Criteria button. • Expression 2 Type:

• For field PLAN_TYPE, click the Add Criteria button. • Expression 2 Type: Prompt • Expression 2: New Prompt

 • Select Heading Type: RFT Long • Heading Types are: – RFT Long

• Select Heading Type: RFT Long • Heading Types are: – RFT Long field name – RFT Short field name – Text Anything you want • Type, Format and Length all default from the field definition in the database. • Edit Types: – – No Table edit Prompt Table Translate Table Yes/No • User Prompt Name is used in translations. No need to change this field. • Click OK

 • Note that prompt has been added and is represented as a bind

• Note that prompt has been added and is represented as a bind variable. • Click Save • Click Run

 • The prompt is displayed directly below the query name and the View

• The prompt is displayed directly below the query name and the View Records button has been added. • Select Long-Term Disability • Click View Results

 • The query has become dynamic based on the Plan_Type chosen for each

• The query has become dynamic based on the Plan_Type chosen for each run.

 • To add a prompt for an additional field, such as coverage election,

• To add a prompt for an additional field, such as coverage election, you simply add another row of criteria. • Click the Fields tab • Click the Add Criteria icon for the COVERAGE_ELECTION field

 • • Choose Expression Type 2: select Prompt Examine the Define Prompt section

• • Choose Expression Type 2: select Prompt Examine the Define Prompt section of Expression 2 Prompt Will display the bind variable or prompt name used for this criteria Search Icon Will display all prompts created for this query New Prompt Select this hyperlink to create a new prompt to be used for this row of criteria Edit Prompt Use this hyperlink to edit the existing prompt used for this row of criteria • In Expression 2, select the New Prompt hyperlink

 • Heading Type: RFT Long • Click OK

• Heading Type: RFT Long • Click OK

 • Examine Criteria Tab for new criteria row • Click Save • Click

• Examine Criteria Tab for new criteria row • Click Save • Click Run

 • Select Plan Type prompt: Long-Term Disability • Select Coverage Election prompt: Elect

• Select Plan Type prompt: Long-Term Disability • Select Coverage Election prompt: Elect • Click View Results

 • Results

• Results

Prompted Queries • People. Soft Query allows you to build reports that contain runtime

Prompted Queries • People. Soft Query allows you to build reports that contain runtime prompts. • A runtime prompt allows you or another user to enter a value for a specific field at the time the query is run. • The report will display only those data rows that match the field entered at the prompt. • This makes the query dynamic, allowing it to be used over and over again for changing requirements.

Runtime Prompts Create the following query to retrieve employee disability election information. Record HEALTH_BENEFIT

Runtime Prompts Create the following query to retrieve employee disability election information. Record HEALTH_BENEFIT Fields EMPLID (short description) PLAN_TYPE COVERAGE_BEGIN_DT COVERAGE_ELECT BENEFIT_PLAN Order by EMPLID Query name MEDICAL (short description)

Your Fields tab should look like this. Save the query and run it

Your Fields tab should look like this. Save the query and run it

Results

Results

 • A prompt is simply a row of criteria and can be added

• A prompt is simply a row of criteria and can be added from two locations. • Click the Prompts tab • The Prompts tab can be used to add runtime prompts and display a list of all prompts that have been added to the query. • The criteria tab is the most common method of adding criteria and is useful when only adding one runtime prompt. • Click the Fields tab

 • For field PLAN_TYPE, click the Add Criteria button. • Expression 2 Type:

• For field PLAN_TYPE, click the Add Criteria button. • Expression 2 Type: Prompt • Expression 2: New Prompt

 • Select Heading Type: RFT Long • Heading Types are: – RFT Long

• Select Heading Type: RFT Long • Heading Types are: – RFT Long field name – RFT Short field name – Text Anything you want • Type, Format and Length all default from the field definition in the database. • Edit Types: – – No Table edit Prompt Table Translate Table Yes/No • User Prompt Name is used in translations. No need to change this field. • Click OK

 • Note that prompt has been added and is represented as a bind

• Note that prompt has been added and is represented as a bind variable. • Click Save • Click Run

 • The prompt is displayed directly below the query name and the View

• The prompt is displayed directly below the query name and the View Records button has been added. • Select Medical • Click View Results

The query has become dynamic based on the Plan_type chosen for each run.

The query has become dynamic based on the Plan_type chosen for each run.

 • To add a prompt for an additional field, such as coverage election,

• To add a prompt for an additional field, such as coverage election, you simply add another row of criteria. • Click the Fields tab • Click the Add Criteria icon for the COVERAGE_ELECTION field

 • • Choose Expression Type 2: select Prompt Examine the Define Prompt section

• • Choose Expression Type 2: select Prompt Examine the Define Prompt section of Expression 2 Prompt Will display the bind variable or prompt name used for this criteria Search Icon Will display all prompts created for this query New Prompt Select this hyperlink to create a new prompt to be used for this row of criteria Edit Prompt Use this hyperlink to edit the existing prompt used for this row of criteria • In Expression 2, select the New Prompt hyperlink

 • Heading Type: RFT Long • Click OK

• Heading Type: RFT Long • Click OK

 • Examine Criteria Tab for new criteria row • Click Save • Click

• Examine Criteria Tab for new criteria row • Click Save • Click Run

 • Select Plan Type prompt: MEDICAL • Select Coverage Election prompt: Elect •

• Select Plan Type prompt: MEDICAL • Select Coverage Election prompt: Elect • Click View Results

Prompt Summary • Creating Prompts Tab Useful when adding multiple prompts to one query

Prompt Summary • Creating Prompts Tab Useful when adding multiple prompts to one query Criteria Tab Useful when adding one prompt to a query for a specified field • Editing Prompts – once created, you can view them via one of the methods above Prompts Tab Click Edit button for the prompt you wish to edit. Criteria Tab Click Edit Prompt hyperlink to edit the prompt. • Deleting Prompts – To delete a prompt, access the Prompts page and click the delete button (minus sign) for the prompt you wish to delete. If you are using the prompt in a row of criteria, you must remove it from the criteria before deleting it.

People. Soft Tables • EMPLOYEES - Non terminated Employees – Joins Job and Personal

People. Soft Tables • EMPLOYEES - Non terminated Employees – Joins Job and Personal data for you – Ideal for much of your ad hoc reporting needs – Reporting table refreshed nightly, does not impact system performance – Contains data for non-terminated employees, allowing queries to run faster

Other People. Soft Tables • EMPLOYMENT - EE General Employment Data • PERSONNEL -

Other People. Soft Tables • EMPLOYMENT - EE General Employment Data • PERSONNEL - Personal/Employmt/Job-One Date – Useful for common ad hoc reporting needs – Includes terminated/retired employees • PERSONNEL_HIST - Personal/Employmt/Job-All Dtes – Useful for ad hoc reporting needs requiring history or future dated rows

Other People. Soft Tables • JOB – Employee Job History – Base Job record

Other People. Soft Tables • JOB – Employee Job History – Base Job record table, join with personal_data table for simple join • PERSONAL_DATA - PERSONAL_DATA view – Base Personal record table, join with Job for simple join