# QBTableClause

## Overview

The `QBTableClause` class is a fundamental component for building queries within the Servoy environment. It manages properties related to the table, such as \`dataSource\` and \`tableAlias\`, and provides functionality to retrieve or create columns for the query.

The class offers methods for managing the columns associated with a data source, such as `getColumn()` to retrieve specific columns by name, and `columns()` to get all available columns.

It allows for complex query construction by supporting joins, accessible via the `joins()` method, which handles relationships between tables. The `getTable()` method provides access to the underlying table associated with the data source, while `getColumnNames()` retrieves all the column names in the table.

Additionally, the \`QBTableClause\` class provides a way to find other \`QBTableClause\` objects through table aliases, using the `findQueryBuilderTableClause()` method.

The class also facilitates the dynamic creation of columns when needed, and it ensures that the correct `QBColumn` objects are available for query building. By supporting query table retrieval, column management, and joins, `QBTableClause` is integral to structuring and executing complex database queries in the Servoy environment.

## Properties Summarized

| Type                                                                             | Name                | Summary                                                                                        |
| -------------------------------------------------------------------------------- | ------------------- | ---------------------------------------------------------------------------------------------- |
| [QBColumns](/reference/servoycore/dev-api/database-manager/qbcolumns.md)         | [columns](#columns) | Get all the columns of the datasource that can be used for this query (select or where clause) |
| [QBJoins](/reference/servoycore/dev-api/database-manager/qbjoins.md)             | [joins](#joins)     | Get the joins clause of this table based clause.                                               |
| [QBTableClause](/reference/servoycore/dev-api/database-manager/qbtableclause.md) | [parent](#parent)   | Get query builder parent table clause, this may be a query or a join clause.                   |
| [QBSelect](/reference/servoycore/dev-api/database-manager/qbselect.md)           | [root](#root)       | Get query builder parent.                                                                      |

## Methods Summarized

| Type                                                                   | Name                                                                  | Summary                                       |
| ---------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------- |
| [QBColumn](/reference/servoycore/dev-api/database-manager/qbcolumn.md) | [getColumn(name)](#getcolumn-name)                                    | Get a column from the table.                  |
| [QBColumn](/reference/servoycore/dev-api/database-manager/qbcolumn.md) | [getColumn(columnTableAlias, name)](#getcolumn-columntablealias-name) | Get a column from the table with given alias. |
| [String](/reference/servoycore/dev-api/js-lib/string.md)               | [getDataSource()](#getdatasource)                                     | Returns the datasource for this.              |
| [String](/reference/servoycore/dev-api/js-lib/string.md)               | [getTableAlias()](#gettablealias)                                     | Returns the table alias for this.             |

## Properties Detailed

### columns

Get all the columns of the datasource that can be used for this query (select or where clause)

**Type**\
[QBColumns](/reference/servoycore/dev-api/database-manager/qbcolumns.md)

**Sample**

```js
var query = foundset.getQuery();
query.result.add(query.columns.name, "name");
query.where.add(query.columns.orderdate.isNull)
```

### joins

Get the joins clause of this table based clause.\
Joins added to this clause will be based on this table clauses table.

**Type**\
[QBJoins](/reference/servoycore/dev-api/database-manager/qbjoins.md)

**Sample**

```js
foundset.getQuery().joins
```

### parent

Get query builder parent table clause, this may be a query or a join clause.

**Type**\
[QBTableClause](/reference/servoycore/dev-api/database-manager/qbtableclause.md)

**Sample**

```js
var query = datasources.db.example_data.person.createSelect();
	query.where.add(query.joins.person_to_parent.joins.person_to_parent.columns.name.eq('john'))
	foundset.loadRecords(query)
```

### root

Get query builder parent.

**Type**\
[QBSelect](/reference/servoycore/dev-api/database-manager/qbselect.md)

**Sample**

```js
var subquery = datasources.db.example_data.order_details.createSelect();

	var query = datasources.db.example_data.orders.createSelect();
	query.where.add(query
		.or
			.add(query.columns.order_id.not.isin([1, 2, 3]))

			.add(query.exists(
					subquery.where.add(subquery.columns.orderid.eq(query.columns.order_id)).root
			))
		)

	foundset.loadRecords(query)
```

## Methods Detailed

### getColumn(name)

Get a column from the table.

**Parameters**

* [String](/reference/servoycore/dev-api/js-lib/string.md) **name** the name of column to get

**Returns:** [QBColumn](/reference/servoycore/dev-api/database-manager/qbcolumn.md) the QBColumn representing the specified column name.

**Sample**

```js
foundset.getQuery().getColumn('orderid')
```

### getColumn(columnTableAlias, name)

Get a column from the table with given alias.\
The alias may be of the main table or any level deep joined table.

**Parameters**

* [String](/reference/servoycore/dev-api/js-lib/string.md) **columnTableAlias** the alias for the table
* [String](/reference/servoycore/dev-api/js-lib/string.md) **name** the name of column to get

**Returns:** [QBColumn](/reference/servoycore/dev-api/database-manager/qbcolumn.md) the QBColumn representing the specified column from the table with the given alias.

**Sample**

```js
foundset.getQuery().getColumn('orderid', 'opk')
```

### getDataSource()

Returns the datasource for this.

**Returns:** [String](/reference/servoycore/dev-api/js-lib/string.md) the dataSource

### getTableAlias()

Returns the table alias for this.

**Returns:** [String](/reference/servoycore/dev-api/js-lib/string.md) the tableAlias

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbtableclause.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
