用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1219|回复: 5
收起左侧

[版本 3.x] sql语句书写

[复制链接]
发表于 2016-7-15 14:29:37 | 显示全部楼层 |阅读模式
本帖最后由 飞鱼 于 2016-7-15 14:34 编辑

各位,请教下,以下语句如何用 CI3.0的 sql语句表达
SELECT F. *
FROM (
SELECT *
FROM  `table`
GROUP BY  `name` ,  `status`
ORDER BY  `name` ,  `status`
) AS F
ORDER BY `name` DESC
这个语句只是把复杂SQL简写了.
请不要讨论此语句本身该不该这样写.

因为我遇到 双层以上 select查询再加上  group by  A,B order by  A ,B
这样的用法,就有问题.

发表于 2016-7-15 15:23:19 | 显示全部楼层
可以使用 $this->db->query()
請參閱 : CI 手冊 - 查詢
 楼主| 发表于 2016-7-15 16:23:04 | 显示全部楼层
Closer 发表于 2016-7-15 15:23
可以使用 $this->db->query()
請參閱 : CI 手冊 - 查詢

大神,那请问以下语句错误如何破.
$this->db->query("SELECT F. * FROM (SELECT * FROM  car_dispatch) AS F ")->get();
================分割线============================
A Database Error Occurred

Error Number: 1096

No tables used

SELECT *
发表于 2016-7-15 16:44:12 | 显示全部楼层
飞鱼 发表于 2016-7-15 16:23
大神,那请问以下语句错误如何破.
$this->db->query("SELECT F. * FROM (SELECT * FROM  car_dispatch) AS ...

是不是少加 ` 的關係 ?
 楼主| 发表于 2016-7-15 16:52:09 | 显示全部楼层
Closer 发表于 2016-7-15 16:44
是不是少加 ` 的關係 ?

直接使用 $this->db->query 构造  双层以上 select 重来没有成功过.
 楼主| 发表于 2016-7-15 17:38:34 | 显示全部楼层
Closer 发表于 2016-7-15 15:23
可以使用 $this->db->query()
請參閱 : CI 手冊 - 查詢

谢谢回复,问题解决了
不有使用 query ,个人觉得 query有bug
使用
->protect_identifiers('table_name');//
->select
    ->from('()')
这种方式,只有 group by 有多个元素的时候,要分别引起来,如果元素是数据表的某一项名字,则不能引起来,需要在语句执行前加上保护.如第一行语句.
调试了好久,哎,痛苦.

本版积分规则