---
title: "SQL-030: Read PERSON_ADDRESS_PHONE, PERSON_ADDRESS, ADDRESS for `clsContactAddressCollection`"
summary: Read statement for `clsContactAddressCollection` against PERSON_ADDRESS_PHONE, PERSON_ADDRESS, ADDRESS.
status: draft
owner: SAIF
last_reviewed: 2026-07-24
library: SAIF.Business.CustomerContact
reference_type: package
---

# SQL-030: Read PERSON_ADDRESS_PHONE, PERSON_ADDRESS, ADDRESS for `clsContactAddressCollection`

This statement supports `clsContactAddressCollection` by executing a read operation against PERSON_ADDRESS_PHONE, PERSON_ADDRESS, ADDRESS.

## Classification

| Field | Value |
| --- | --- |
| SQL ID | SQL-030 |
| Operation type | Read |
| Execution method | Inline |
| Database | Oracle |
| Schema | `[unqualified]**` |
| Command type | Text |
| Business object | `clsContactAddressCollection` |
| Criteria property | RetrieveSQL |
| Lifecycle method | BeforeRetrieve |

## Parameters

| Parameter | Direction | Type | Max length | Description |
| --- | --- | --- | --- | --- |
| `:ContactID` | Input | Decimal | N/A | Contact primary key |

## Tables

| Table | Access | Columns used |
| --- | --- | --- |
| [PERSON_ADDRESS_PHONE](../database-tables.md#person-address-phone) | SELECT / JOIN | See sample SQL** |
| [PERSON_ADDRESS](../database-tables.md#person-address) | SELECT / JOIN | ADDRESS_SEQ_NUM, PERSON_SEQ_NUM |
| [ADDRESS](../database-tables.md#address) | SELECT / JOIN | ACTIVE_FLAG, ADDRESS_CODE, ADDRESS_LINE1, ADDRESS_LINE2, ADDRESS_LINE3, ADDRESS_LINE4, ADDRESS_SEQ_NUM, CITY_NAME, COUNTRY_CODE, COUNTY_CODE, CREATE_DATE, CREATE_USER, EFF_DT, EXP_DT, FOREIGN_ADDRESS_FLAG, FOREIGN_POSTAL_CODE, LOCATION_NAME, NOTE_TEXT, PERSON_SEQ_NUM, PRIMARY_FLAG, STATE, UPDATE_DATE, UPDATE_USER, ZIP_CODE, ZIP_CODE_EXT |

## Sample SQL

```sql
Select (SELECT PHONE_SEQ_NUM FROM PERSON_ADDRESS_PHONE WHERE PERSON_SEQ_NUM = PERSON_ADDRESS.PERSON_SEQ_NUM AND ADDRESS_SEQ_NUM = PERSON_ADDRESS.ADDRESS_SEQ_NUM) as ConnectedPhoneID,(SELECT FAX_SEQ_NUM FROM PERSON_ADDRESS_PHONE WHERE PERSON_SEQ_NUM = PERSON_ADDRESS.PERSON_SEQ_NUM AND ADDRESS_SEQ_NUM = PERSON_ADDRESS.ADDRESS_SEQ_NUM) as ConnectedFaxID, ADDRESS.ADDRESS_SEQ_NUM as AddressID, ADDRESS.ADDRESS_CODE as AddressCode, ADDRESS.ADDRESS_LINE1 as AddressLine1, ADDRESS.ADDRESS_LINE2 as AddressLine2, ADDRESS.ADDRESS_LINE3 as AddressLine3, ADDRESS.ADDRESS_LINE4 as AddressLine4, ADDRESS.CITY_NAME as CityName, ADDRESS.STATE as StateCode, ADDRESS.ZIP_CODE as ZipCode, ADDRESS.ZIP_CODE_EXT as ZipCodeExtension, ADDRESS.COUNTRY_CODE as CountryCode, ADDRESS.FOREIGN_ADDRESS_FLAG as ForeignAddressFlag, ADDRESS.FOREIGN_POSTAL_CODE as ForeignPostalCode, ADDRESS.CREATE_DATE as CreateDate, ADDRESS.CREATE_USER as CreateUser, ADDRESS.UPDATE_USER as UpdateUser, ADDRESS.UPDATE_DATE as UpdateDate, ADDRESS.EFF_DT as EffectiveDate, ADDRESS.EXP_DT as ExpirationDate, ADDRESS.ACTIVE_FLAG as ActiveFlag, ADDRESS.PRIMARY_FLAG as PrimaryFlag, ADDRESS.NOTE_TEXT as NoteText, ADDRESS.COUNTY_CODE as CountyCode, ADDRESS.LOCATION_NAME as LocationName From Person_ADDRESS, ADDRESS Where Person_ADDRESS.ADDRESS_SEQ_NUM = ADDRESS.ADDRESS_SEQ_NUM AND Person_ADDRESS.Person_SEQ_NUM = :ContactID
```

## Operations and processes
- [Address info CRUD and linking](../operations/address-info-crud-and-linking.md)

> **Note:** Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `Business\SAIF.Business.CustomerContact\Contact\clsContactAddressCollection.vb`
