在列表页面的时候 可能会用到 表的左右连接
在我写sql语句的时候
会避免 “两个或者多个表全部的表数据进行连接,然后在查出10条 .”
或者是 “先读取一张表取10条数据 ,然后进行for或者foreach的 循环查询 查询这10条”
而是进行 子查询查出这10条然后去管理另一张表
tp 的写法
/* 先查出一个表的 10条*/
$subQuery = M('usb')
->where($map)
->limit($page->firstRow , $page->listRows)
->field('id,name')
->buildSql();
/* 然后继续左链接 */
$list = $user
->table($subQuery.'B')
->join('LEFT JOIN `user` AS A ON A.id = B.id')
->field('A.`id` AS user_id,A.`name` AS user_name,B.`id`,B.`name`')
->select();
sql 语句
SELECT
t.`user_name`,r.`name` as region_name
FROM (
SELECT
`id`,
`name` as user_name ,
`region_id`
FROM
user
WHERE
LIMIT 0,10
) as t
LEFT JOIN region as r
on r.id = t.region_id;
如果你有更好的逻辑思路可以给我留言~