Chained CRUD - Sort, Group, Join & Selection
Sort, group, join, and selection methods all return the cDataBase object, allowing free stacking and combination. For architecture details, see Chained CRUD Overview.
Sorting Methods
OrderBy - ASC Sorting
Can be called multiple times to stack multiple sort fields.
Syntax
vb
Function OrderBy(ByVal FieldName As String) As cDataBaseExample
vb
' Single field sorting
db.Table("users").OrderBy("age").RowRead
' Multi-field sorting (by age, then by name)
db.Table("users").OrderBy("age").OrderBy("name").RowReadOrderByDesc - DESC Sorting
Syntax
vb
Function OrderByDesc(ByVal FieldName As String) As cDataBaseExample
vb
' Sort by ID descending
db.Table("users").OrderByDesc("id").RowRead
' Mixed sorting (age descending, name ascending)
db.Table("users").OrderByDesc("age").OrderBy("name").RowReadOrderByRaw - Custom Sort Clause
Syntax
vb
Function OrderByRaw(ByVal RawClause As String) As cDataBaseExample
vb
' Compound sorting
db.Table("users").OrderByRaw("age DESC, name ASC").RowRead
' Function sorting
db.Table("users").OrderByRaw("RAND()").RowReadGrouping Methods
GroupBy - Group Query
Can be called multiple times to stack multiple group fields.
Syntax
vb
Function GroupBy(ByVal FieldName As String) As cDataBaseExample
vb
' Group by department
db.Table("users").Columns("dept,COUNT(*) AS cnt").GroupBy("dept").RowRead
' Multi-field grouping
db.Table("orders").Columns("year,month,SUM(amount) AS total").GroupBy("year").GroupBy("month").RowReadHaving - Group Filter
Used with GroupBy to filter grouped results.
Syntax
vb
Function Having(ByVal Condition As String) As cDataBaseExample
vb
' Departments with count greater than 5
db.Table("users").Columns("dept,COUNT(*) AS cnt").GroupBy("dept").Having("cnt>5").RowRead
' Departments with average salary greater than 8000
db.Table("users").Columns("dept,AVG(salary) AS avg_sal").GroupBy("dept").Having("avg_sal>8000").RowReadJoin Methods
Join - INNER JOIN
Syntax
vb
Function Join(ByVal TableName As String, ByVal OnCondition As String) As cDataBaseExample
vb
' Inner join
db.Table("orders") _
.Columns("orders.id,users.name,orders.amount") _
.Join("users", "orders.user_id=users.id") _
.RowReadLeftJoin - LEFT JOIN
Syntax
vb
Function LeftJoin(ByVal TableName As String, ByVal OnCondition As String) As cDataBaseExample
vb
' Left join (keep all orders, even without matching users)
db.Table("orders") _
.Columns("orders.id,users.name") _
.LeftJoin("users", "orders.user_id=users.id") _
.OrderByDesc("orders.id") _
.RowReadRightJoin - RIGHT JOIN
Syntax
vb
Function RightJoin(ByVal TableName As String, ByVal OnCondition As String) As cDataBaseExample
vb
' Right join
db.Table("orders") _
.RightJoin("users", "orders.user_id=users.id") _
.RowReadMulti-Table Join Stacking
vb
' Three-table join
db.Table("orders") _
.Columns("orders.id,users.name,products.title") _
.Join("users", "orders.user_id=users.id") _
.Join("products", "orders.product_id=products.id") _
.Where("orders.amount>?", 100) _
.OrderByDesc("orders.id") _
.RowReadColumn Selection Methods
Columns - Specify Query Columns
Defaults to SELECT *, changes to specified columns after calling. Supports comma-separated string or multiple parameter forms.
Note: Method name uses
Columnsinstead ofSelectto avoid conflict with VB6 reserved keywordSelect Case.
Syntax
vb
Function Columns(ParamArray Cols() As Variant) As cDataBaseExample
vb
' String form
db.Table("users").Columns("id,name,age").RowRead
' Multiple parameter form
db.Table("users").Columns("id", "name", "age").RowRead
' With aggregate functions
db.Table("users").Columns("dept,COUNT(*) AS cnt").GroupBy("dept").RowRead
' With JOIN
db.Table("orders").Columns("orders.id,users.name").Join("users", "orders.uid=users.id").RowReadDistinct - Distinct Query
Syntax
vb
Function Distinct() As cDataBaseExample
vb
' Query distinct departments
db.Table("users").Distinct.Columns("dept").RowRead
' Query distinct cities
db.Table("users").Distinct.Columns("city").Where("age>?", 18).RowReadLast Updated: 2026-06-26