tp5.1数据表的联合查询

数据表的联合查询本质上是找表的交集 先找交集再交叉并集

1 分别找到两个表  2分别在两张表里找打符合join()里的条件的表,在找到符合where条件里的表  3两张表里的条件交叉并集

Db::name()->alias()->join()->where()->select()

name('table'):第一个集合:表里的所有数据

join($join,$codition):第二个集合:$join, $condition交集的条件 条件必须得是两个表的列的比较可以是个数组

alias('table t')给表起个名字

以$condition为条件在表2中找到符合条件的集合与where()的条件中组成并集

   $permision = Db::name('user_user')->alias('u')->where(['u.id'=>$playerid,'g.type'=>2])->field('g.gold,u.gold')->join('games_lower_limit g','u.integral>g.sliver or u.gold>g.gold')->select();

field(u.gold, g.gold )名字相同的后面一个字段会替换掉前面一个字段

总结:每一个条件都视为一个集合,每个集合交集就是联合查询的结果,where关联数组(['s.grade'=>'60','s.course'=>'english'])

公式:(["key"=>"value","key"=>"value"])所有的键值对为and模式

  索引数组:([  ['u.grade','>','60'] ,  ['u.grade','=','60'] ,  ['u.name','like','wen%']]) 公式:([ ["key","operator","value"] ,... ])所有条件为and模式

上述使用whereOr即可把条件改为or模式

  字符串条件("u.grade > 60 and u.name like wen%")

猜你喜欢

转载自blog.csdn.net/e10million/article/details/82181208