Yii 连表查询相关问题(处理被连接表需要排序再关联问题)
2018-05-22| 程成| 1171| 0| MySQL

比如 表A 对应了 表B 的多条记录,并且希望关联的时候,取出 表B 中根据某个字段排序后的第一条数据。


起先,尝试用 group by 语句,但是 group by 是对查询结果进行分组。我们这里是连表中的排序,无法使用 group by 语句。


可以使用下面的方法(Yii 写法):


$query->addSelect(["IF(temp.type=1,'备货单','请购单') as order_type_text"]);
$query->addSelect(['temp.字段1','temp.字段2']);
$sql = "SELECT 字段值1,字段值2,... FROM 表名 GROUP BY 字段3 ORDER BY 字段4 DESC";
$query->join('LEFT JOIN', "($sql) as temp", 'temp.关联字段 = details.关联字段');


这里的 type 如果为1时,order_type_text 值为“备货单”,否则为“请购单”。这样就省去了一层 foreach 修改值的嵌套。


这个方法解决了在连表查询一对多关系中,被连接表需要排序再关联问题。

×
作者:程成
QQ:492245711