飞鱼 发表于 2016-7-15 14:29:37

sql语句书写

本帖最后由 飞鱼 于 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 byA,B order byA ,B
这样的用法,就有问题.

Closer 发表于 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 * FROMcar_dispatch) AS F ")->get();
================分割线============================
A Database Error Occurred

Error Number: 1096

No tables used

SELECT *

Closer 发表于 2016-7-15 16:44:12

飞鱼 发表于 2016-7-15 16:23
大神,那请问以下语句错误如何破.
$this->db->query("SELECT F. * FROM (SELECT * FROMcar_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 有多个元素的时候,要分别引起来,如果元素是数据表的某一项名字,则不能引起来,需要在语句执行前加上保护.如第一行语句.
调试了好久,哎,痛苦.
页: [1]
查看完整版本: sql语句书写