两张字段一样的表联表查询数据,用一个字段来区分查询结果数据所属表
要点
- UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同
- 要区分数据所属表需要增加一个字段 参考 ‘artel_club’,参考下面代码
$sub = Db::table('fa_artel')
->alias('a')
->join('fa_artel_apply_log l', 'a.id = l.artel_id and l.is_check = 1')
//要保证union中查询出的字段和field中的字段数量一样,字段名相同
->union('select '."'club' as 'artel_club'".',id,serial_number,lng,lat,title from fa_club where is_check=1 and grade_id > 1')
//都添加一个字段'artel_club'区分数据来源表
->field("'artel' as 'artel_club'".',a.id,a.serial_number,a.lng,a.lat,a.title')
->buildSql();
$data = Db::table($sub)
->alias('a')
->select();