数据表的联合查询本质上是找表的交集 先找交集再交叉并集
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%")