Medoo 多表联查
来源:互联网 发布:硬笔书法网络免费班 编辑:程序博客网 时间:2024/06/06 09:26
select方法:有两种传参调用方式
1、单表查询:三个参数
select($table, $columns, $where)
第一个参数类型为字符串:String,即为要查询的数据表名
第二个参数类型为字符串或数组:String/Array,即为要查询的字段名称,如果只是一个字段就写字符串:String,如果是要查询所有是“*”的话,也是传入字符串;如果要查多个字段,比如这个表id和name字段,就写数组:array('id','name')
第三个参数类型为数组:Array,即为查询的Where条件,因Where的写法相对特殊,详细的Where使用说明移步到Medoo Where的使用:条件 里查看
第三个参数默认可不填写,不填写即为不加入where条件进行查询
单表数据查询(带where条件):
$database = new medoo("my_database"); $datas = $database->select("account", array( "user_name", "email" ), array( "user_id[>]" => 100 ));
对应传入数据表名;要显示的字段,这里是多个字段,因此传入数组,最后的where判断条件也是数组形式传入,最终查询返回的结果存储在$datas内,为数组形式
单表数据查询(全表查询):
$datas = $database->select("account", "*");单表数据查询(仅查询一个字段):
$datas = $database->select("account", "user_name");
单表数据查询(字段别名):
$data = $database->select("account", array( "user_id", "nickname(my_nickname)" ), array( "LIMIT" => 20 ));
字段别名的例子中,原本字段为nickname,后面增加括号后,nickname的别名会被变更为括号内的名字my_nickname
2、多表查询:四个参数
select($table, $join, $columns, $where)
第一个参数类型为字符串:String,即为要查询的数据表名
第二个参数类型为数组:Array,即为要关联查询的数据表与字段名称
第三个参数类型为字符串或数组:String/Array,即为要查询的字段名称,如果只是一个字段就写字符串:String,如果是要查询所有是“*”的话,也是传入字符串;如果要查多个字段,比如这个表id和name字段,就写数组:array('id','name')
第四个参数类型为数组:Array,即为查询的Where条件,因Where的写法相对特殊,详细的Where使用说明移步到Medoo Where的使用:条件语句里查看
第四个参数默认可不填写,不填写即为不加入where条件进行查询
多表数据查询:(关联查询)
$database->select("post", array( "[>]account" => array("author_id" => "user_id"), "[>]album" => "user_id", "[>]photo" => array("user_id", "avatar_id") ), array( "post.post_id", "post.title", "account.city" ), array( "post.user_id" => 100, "ORDER" => "post.post_id DESC", "LIMIT" => 50 ));
从以上的多表查询可以看出,第一个参数依然为表名,只是第二个有了变化。第二个参数为关联数据,第三个参数为字段,第四个为Where条件。
我们在写多表关联查询中,会用到表名.字段【table.colums】的的写法,这里也不意外,一样要写,以上多表关联等同于以下SQL语句:
SELECT `post`.`post_id`, `post`.`title`, `account`.`city` FROM `post` LEFT JOIN `account` ON `post`.`author_id` = `account`.`user_id` LEFT JOIN `album` USING (`user_id`) LEFT JOIN `photo` USING (`user_id`, `avatar_id`) WHERE `post`.`user_id` = 100 ORDER BY `post`.`post_id` DESC LIMIT 50
依据单表查询的规律,去推出关联查询的用法吧
补充说明关联参数$join:(抽取以上唯一一个多表关联的代码段来进行分解说明)
[>]account" => array("author_id" => "user_id"),
[>]是关联的意思,关联有四个,分别为:[>] 等同于 LEFT JOIN、[<] 等同于 RIGH JOIN、[<>] 等同于 FULL JOIN、[><] 等同于 INNER JOIN
account为要关联的表,[>account]为LEFT JOIN `account`
array("author_id"=>"user_id") 数组左边的键为主表的字段,数组右边的值为被关联表的字段,这里这样写,他们的条件关系就会成为相等关系
要注意的是(已向官方发送邮件,如果官方已修正的话,就请无视这句):官方里有段注释的地方写[<]为LEFT JOIN,[>]为RIGHT JOIN。实际这段写反了,正确的说明我刚才就写出了,[>] 等同于 LEFT JOIN、[<] 等同于 RIGH JOIN
- Medoo 多表联查
- Medoo简介
- Medoo入门
- Medoo入门:安装和配置-Medoo使用指南
- Medoo入门:安装和配置-Medoo使用指南
- WHERE语法-Medoo使用指南
- Medoo的使用教程
- mvc(composer 之 medoo)
- Medoo Where的使用
- Medoo Where的使用:条件
- Medoo轻量级的数据库框架
- MVC medoo数据类库
- 封装mvc框架【五】medoo
- Medoo Insert的使用:插入数据
- Medoo Select的使用:查询数据
- Medoo Update的使用:修改更新数据
- Medoo Detele的使用:删除数据
- Medoo Quote的使用:转义字符串
- 解决MySQL不允许从远程访问的方法
- Easy 6题 ZigZag Conversion
- Data URL和图片
- 输入分钟数,按小时和分钟输出
- linux备忘录之- wifi网络通讯数据流程(重点80211)
- Medoo 多表联查
- c语言简单实现 扫雷
- Android MVP 架构最简单的例子!
- 记录一个脑残的问题:MFC的CcomboBox无法显示下拉内容
- 接口的封装
- 图片切圆角
- 键入命令:mount /mnt/cdrom 提示:can't find /mnt/cdrom in /etc/fstable or /etc/mtab
- 用css 添加手状样式,鼠标移上去变小手,变小手
- 华为训练题:输入n个整数,输出其中最小的k个