Skip to content

链表查询

Join DTS

ts
/**
 * 表参数配置
 */
export interface TableConfig {
  /**
   * 表名
   */
  name: string
  /**
   * 表别名
   */
  alias?: string
}

export type TABLE_TYPE = string | TableConfig

export interface JOIN_ON_TYPE {
  /**
   * 连接字段名
   */
  joinField: string
  /**
   * 主表字段名
   */
  mainField: string
  /**
   * 主表表名或表别名
   */
  mainTable: string
}

export interface JOIN_PARAM_TYPE {
  /**
   * 连接方式,默认:INNER JOIN
   */
  type?: 'LEFT' | 'RIGHT'
  /**
   * 连接表配置信息
   */
  t: TABLE_TYPE
  /**
   * 连接条件配置信息
   */
  on: JOIN_ON_TYPE
}

Example

内连接

ts
import emysql from '@dpapejs/emysql'

// 数据库实例化
const mysql = new emysql({
  password: '[db登录密码]',
  user: '[db登录用户名]',
  database: '访问数据库名称'
})

// t_products
const products = [
  {
    code: 'hw_Phone',
    name: 'Huawei Phone',
    type: 'phone'
  }
]
// t_product_type
const t_product_type = [
  {
    type: 'phone',
    cpu: '麒麟A1'
  }
]

// 执行内连接查询
const result = await mysql.query({
  t: 't_products',
  fields: ['name', 'code', 'cpu'],
  join: {
    t: 't_product_type',
    on: {
      joinField: 'type',
      mainField: 'type',
      mainTable: 't_products'
    }
  }
})

// result:: [{ code: 'hw_Phone', name: 'Huawei Phone', cpu: '麒麟A1' }]

左连接

ts
import emysql from '@dpapejs/emysql'

// 数据库实例化
const mysql = new emysql({
  password: '[db登录密码]',
  user: '[db登录用户名]',
  database: '访问数据库名称'
})

// t_user 数据
const user = [{ name: 'name1', department_id: 1 }]

// t_department 数据
const department = [{ name: '部门1', id: 1 }]

// 执行左连接查询
const result = await mysql.query({
  t: 't_user',
  fields: [
    { name: 'name', t: 't_user', alias: 'userName' },
    { name: 'name', t: 't_department', alias: 'departmentName' }
  ],
  join: {
    type: 'LEFT',
    t: 't_department',
    on: {
      joinField: 'id',
      mainField: 'department_id',
      mainTable: 't_user'
    }
  }
})

// result:: [{ userName: 'name1', departmentName: '部门1' }]

右连接

ts
import emysql from '@dpapejs/emysql'

// 数据库实例化
const mysql = new emysql({
  password: '[db登录密码]',
  user: '[db登录用户名]',
  database: '访问数据库名称'
})

// t_user 数据
const user = [{ name: 'name1', department_id: 1 }]

// t_department 数据
const department = [{ name: '部门1', id: 1 }]

// 执行左连接查询
const result = await mysql.query({
  t: 't_user',
  fields: [
    { name: 'name', t: 't_user', alias: 'userName' },
    { name: 'name', t: 't_department', alias: 'departmentName' }
  ],
  join: {
    type: 'RIGHT',
    t: 't_department',
    on: {
      joinField: 'id',
      mainField: 'department_id',
      mainTable: 't_user'
    }
  }
})

// result:: [{ userName: 'name1', departmentName: '部门1' }]