Child pages
  • QBJoins

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
{hiddendiv:style=display:none}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY (EXCEPT INSIDE THE DIV BELOW WITH ID=DESCRIPTION), UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACTAUTO CHANGES FROMUPDATE THE PAGECONTENT ANDTHROUGH MERGETHE THEM BACK INTO SERVOY SOURCE{hiddenDOC GENERATOR{div}
{sub-sectiondiv:id=description|text=}{sub-sectiondiv}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Property Summary{th}{tr}{tbody}{tr}{td}[QBTableClause]{td}{td}[#parent]
Get query builder parent table clause, this may be a query or a join clause.{td}{tr}{tbody}{tbody}{tr}{td}[QBSelect]{td}{td}[#root]
Get query builder parent.{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}[QBJoin]{td}{td}[#add]\(dataSource)
Add a join with join type IQueryBuilderJoin#LEFT\_OUTER\_JOIN and no alias for the joining table.{td}{tr}{tbody}{tbody}{tr}{td}[QBJoin]{td}{td}[#add]\(dataSource, joinType)
Add a join with no alias for the joining table.{td}{tr}{tbody}{tbody}{tr}{td}[QBJoin]{td}{td}[#add]\(dataSource, joinType, alias)
Add a join clause from the parent query builder part to the specified data source.{td}{tr}{tbody}{tbody}{tr}{td}[QBJoin]{td}{td}[#add]\(dataSourceOrRelation, alias)
Add a join based on relation or add a manual join.{td}{tr}{tbody}{table}\\ 

{table:id=property|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=parent|class=node}{tr:id=name}{td}h6.parent{td}{tr}{builder-show:permission=edit}{trtr:id=desret}{td}{sub-section:parent_des|trigger=button|text=}{sub-section}{sub-section:parent_des|trigger=none|*Returns*\\{div:class=sIndent}Replace with description{sub-section[QBTableClause]{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{tr:id=sam}{td}*SinceSample*\\{sub-section:parent_snc|trigger=button|text=}{sub-section}{sub-section:parent_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:parent_prs|trigger=button|text=}{sub-section}{sub-section:parent_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-showdiv:class=sIndent}{code:language=javascript}
/** @type {QBSelect<db:/example_data/person>} */
	var query = databaseManager.createSelect('db:/example_data/person')
	query.where.add(query.joins.person_to_parent.joins.person_to_parent.columns.name.eq('john'))
	foundset.loadRecords(query)
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=root}{tr:id=name}{td}h6.root{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:parent_ret|trigger=button|text=}{sub-section}{sub-section:parent_ret|trigger=none|class=sIndent}[QBTableClause]{sub-section}{td}{tr}{builder-show:permission=edit}{div:class=sIndent}[QBSelect]{div}{td}{tr}{tr:id=seesam}{td}*Also seeSample*\\{sub-section:parent_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:parent_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:parent_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:parent_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:parent_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:parent_sam|trigger=none}{code:language=javascript}
/** @type {QBSelect<db:/example_data/person>} */
	var query = databaseManager.createSelect('db:/example_data/person')
	query.where.add(query.joins.person_to_parent.joins.person_to_parent.columns.name.eq('john'))code:language=javascript}
/** @type {QBSelect<db:/example_data/order_details>} */
	var subquery = databaseManager.createSelect('db:/example_data/order_details')
		
 /** @type {QBSelect<db:/example_data/orders>} */
	var query = databaseManager.createSelect('db:/example_data/orders')
	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)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbodytable}\\ 

{table:id=rootfunction|class=nodeservoy sDetail}{colgroup}{tr:id=namecolumn:width=100%|padding=0px}{td}h6.root{tdcolumn}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{builder-showtbody:permissionid=editadd-String}{tr:id=desname}{td}{sub-section:root_des|trigger=button|text=}{sub-section}{sub-section:root_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edith6.add{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[QBJoin]{span}{span:style=font-weight: bold;}add{span}{span}\(dataSource){span}{td}{tr}{tr:id=sncprs}{td}*SinceParameters*\\{sub-section:root_snc|trigger=button|text=}{sub-section}{sub-section:root_snc|trigger=none|class=sIndent} Replace with version info{sub-sectiondiv:class=sIndent}\{[String]} dataSource -- data source
{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameterstr:id=ret}{td}*Returns*\\{sub-section:root_prs|trigger=button|text=}{sub-section}{sub-section:root_prs|trigger=none|div:class=sIndent}{sub-section[QBJoin]{div}{td}{tr}{builder-show}{tr:id=retsam}{td}*ReturnsSample*\\{sub-section:root_ret|trigger=button|text=}{sub-section}{sub-section:root_ret|trigger=none|div:class=sIndent}[QBSelect]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:root_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:root_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:root_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:root_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:root_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:root_sam|trigger=none}{code:language=javascript}
/** @type {QBSelect<db:/example_data/order_details>} */
	var subquery = databaseManager.createSelect('db:/example_data/order_details')
		
 /** @type {QBSelect<db:/example_data/orders>} */
	var query = databaseManager.createSelect('db:/example_data/orders')
	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)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=add-String|class=node}{tr:id=name}{td}h6.add{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[QBJoin]{span}{span:id=iets|style=float: left; font-weight: bold;}add{span}{span:id=iets|style=float: left;}\(dataSource){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:add-String_des|trigger=button|text=}{sub-section}{sub-section:add-String_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:add-String_snc|trigger=button|text=}{sub-section}{sub-section:add-String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:add-String_prs|trigger=button|text=}{sub-section}{sub-section:add-String_prs|trigger=none|class=sIndent}\{[String]} dataSource -- data source
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:add-String_ret|trigger=button|text=}{sub-section}{sub-section:add-String_ret|trigger=none|class=sIndent}[QBJoin]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:add-String_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:add-String_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:add-String_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_sam|trigger=none}{code:language=javascript}
/** @type {QBSelect<db:/example_data/orders>} */
	var query = databaseManager.createSelect('db:/example_data/orders')
 /** @type {QBJoin<db:/example_data/order_details>} */
	var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
	join.on.add(join.columns.orderid.eq(query.columns.orderid))
 // to add a join based on a relation, use the relation name
 var join2 = query.joins.add('orders_to_customers', 'cust')
	query.where.add(join2.columns.customerid.eq(999))
	foundset.loadRecords(query)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=add-String_Number|class=node}{tr:id=name}{td}h6.add{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[QBJoin]{span}{span:id=iets|style=float: left; font-weight: bold;}add{span}{span:id=iets|style=float: left;}\(dataSource, joinType){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:add-String_Number_des|trigger=button|text=}{sub-section}{sub-section:add-String_Number_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:add-String_Number_snc|trigger=button|text=}{sub-section}{sub-section:add-String_Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:add-String_Number_prs|trigger=button|text=}{sub-section}{sub-section:add-String_Number_prs|trigger=none|class=sIndent}\{[String]} dataSource -- data source
\{[Number]} joinType -- join type, one of JSRelation.LEFT\_OUTER\_JOIN, JSRelation.INNER\_JOIN, JSRelation.RIGHT\_OUTER\_JOIN, JSRelation.FULL\_JOIN
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:add-String_Number_ret|trigger=button|text=}{sub-section}{sub-section:add-String_Number_ret|trigger=none|class=sIndent}[QBJoin]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:add-String_Number_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_Number_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:add-String_Number_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:add-String_Number_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_Number_sam|trigger=none}{code:language=javascript}
/** @type {QBSelect<db:/example_data/orders>} */
	var query = databaseManager.createSelect('db:/example_data/orders')
 /** @type {QBJoin<db:/example_data/order_details>} */
	var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
	join.on.add(join.columns.orderid.eq(query.columns.orderid))
 // to add a join based on a relation, use the relation name
 var join2 = query.joins.add('orders_to_customers', 'cust')
	query.where.add(join2.columns.customerid.eq(999))
	foundset.loadRecords(query)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=add-String_Number_String|class=node}{tr:id=name}{td}h6.add{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[QBJoin]{span}{span:id=iets|style=float: left; font-weight: bold;}add{span}{span:id=iets|style=float: left;}\(dataSource, joinType, alias){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:add-String_Number_String_des|trigger=button|text=}{sub-section}{sub-section:add-String_Number_String_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:add-String_Number_String_snc|trigger=button|text=}{sub-section}{sub-section:add-String_Number_String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:add-String_Number_String_prs|trigger=button|text=}{sub-section}{sub-section:add-String_Number_String_prs|trigger=none|class=sIndent}\{[String]} dataSource -- data source
\{[Number]} joinType -- join type, one of IQueryBuilderJoin#LEFT\_OUTER\_JOIN, IQueryBuilderJoin#INNER\_JOIN, IQueryBuilderJoin#RIGHT\_OUTER\_JOIN, IQueryBuilderJoin#FULL\_JOIN
\{[String]} alias -- the alias for joining table
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:add-String_Number_String_ret|trigger=button|text=}{sub-section}{sub-section:add-String_Number_String_ret|trigger=none|class=sIndent}[QBJoin]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:add-String_Number_String_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_Number_String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:add-String_Number_String_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_Number_String_link|trigger=none}{sub-section}{code:language=javascript}
/** @type {QBSelect<db:/example_data/orders>} */
	var query = databaseManager.createSelect('db:/example_data/orders')
 /** @type {QBJoin<db:/example_data/order_details>} */
	var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
	join.on.add(join.columns.orderid.eq(query.columns.orderid))
 // to add a join based on a relation, use the relation name
 var join2 = query.joins.add('orders_to_customers', 'cust')
	query.where.add(join2.columns.customerid.eq(999))
	foundset.loadRecords(query)
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=add-String_Number}{tr:id=name}{td}h6.add{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[QBJoin]{span}{span:style=font-weight: bold;}add{span}{span}\(dataSource, joinType){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} dataSource -- data source
\{[Number]} joinType -- join type, one of JSRelation.LEFT\_OUTER\_JOIN, JSRelation.INNER\_JOIN, JSRelation.RIGHT\_OUTER\_JOIN, JSRelation.FULL\_JOIN
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[QBJoin]{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:add-String_Number_String_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_Number_String_sam|trigger=nonediv:class=sIndent}{code:language=javascript}
/** @type {QBSelect<db:/example_data/orders>} */
	var query = databaseManager.createSelect('db:/example_data/orders')
 /** @type {QBJoin<db:/example_data/order_details>} */
	var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
	join.on.add(join.columns.orderid.eq(query.columns.orderid))
 // to add a join based on a relation, use the relation name
 var join2 = query.joins.add('orders_to_customers', 'cust')
	query.where.add(join2.columns.customerid.eq(999))
	foundset.loadRecords(query)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=add-String_String|class=node}{tr:id=name}{td}h6.add{tr}{tbody}{tbody:id=add-String_Number_String}{tr:id=name}{td}h6.add{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[QBJoin]{span}{span:style=font-weight: bold;}add{span}{span}\(dataSource, joinType, alias){span}{td}{tr}{tr:id=sigprs}{td}*Parameters*\\{spandiv:style=float: left; margin-right: 5px;}[QBJoin]{span}{span:id=iets|style=float: left; font-weight: bold;}add{span}{span:id=iets|style=float: left;}\(dataSourceOrRelation, alias){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:add-String_String_des|trigger=button|text=}{sub-section}{sub-section:add-String_String_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=editclass=sIndent}\{[String]} dataSource -- data source
\{[Number]} joinType -- join type, one of IQueryBuilderJoin#LEFT\_OUTER\_JOIN, IQueryBuilderJoin#INNER\_JOIN, IQueryBuilderJoin#RIGHT\_OUTER\_JOIN, IQueryBuilderJoin#FULL\_JOIN
\{[String]} alias -- the alias for joining table
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[QBJoin]{div}{td}{tr}{tr:id=sncsam}{td}*SinceSample*\\{sub-section:add-String_String_snc|trigger=button|text=}{sub-section}{sub-section:add-String_String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:add-String_String_prs|trigger=button|text=}{sub-section}{sub-section:add-String_String_prs|trigger=none|class=sIndent}\{[String]} dataSourceOrRelation -- data source
\{[String]} alias -- the alias for joining table
{sub-sectiondiv:class=sIndent}{code:language=javascript}
/** @type {QBSelect<db:/example_data/orders>} */
	var query = databaseManager.createSelect('db:/example_data/orders')
 /** @type {QBJoin<db:/example_data/order_details>} */
	var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
	join.on.add(join.columns.orderid.eq(query.columns.orderid))
 // to add a join based on a relation, use the relation name
 var join2 = query.joins.add('orders_to_customers', 'cust')
	query.where.add(join2.columns.customerid.eq(999))
	foundset.loadRecords(query)
{code}{div}{td}{tr}{tr:id=retclass=lastDetailRow}{td}{td}*Returns*\\{sub-section:add-String_String_ret|trigger=button|text=}{sub-section}{sub-section:{tr}{tbody}{tbody:id=add-String_String_ret|trigger=none|class=sIndent}[QBJoin]{sub-section}}{tr:id=name}{td}h6.add{td}{tr}{builder-show:permission=edit}{tr:id=seesig}{td}*Also see*\\{sub-section:add-String_String_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit{span:style=margin-right: 5px;}[QBJoin]{span}{span:style=font-weight: bold;}add{span}{span}\(dataSourceOrRelation, alias){span}{td}{tr}{tr:id=linkprs}{td}*External links*\\{sub-section:add-String_String_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_String_link|trigger=none}{sub-section}Parameters*\\{div:class=sIndent}\{[String]} dataSourceOrRelation -- data source
\{[String]} alias -- the alias for joining table
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[QBJoin]{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:add-String_String_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:add-String_String_sam|trigger=none}{code:language=javascript}
/** @type {QBSelect<db:/example_data/orders>} */
	var query = databaseManager.createSelect('db:/example_data/orders')
 /** @type {QBJoin<db:/example_data/order_details>} */
	var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
	join.on.add(join.columns.orderid.eq(query.columns.orderid))
 // to add a join based on a relation, use the relation name
 var join2 = query.joins.add('orders_to_customers', 'cust')
	query.where.add(join2.columns.customerid.eq(999))
	foundset.loadRecords(query)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}