多表查询的话,表与表之间要有关联字段。
成都创新互联专注于企业营销型网站、网站重做改版、宣化网站定制设计、自适应品牌网站建设、HTML5建站、商城网站制作、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为宣化等各大城市提供网站开发制作服务。
例外,应该用join查询, 比如:
select * from 表1 left join 表2 on 表2.uid = 表1.id where 表1.字段 = 'XXXX'
也许是我孤陋寡闻了,似乎没有办法跨库关联查询吧。如果非要跨库关联,我能想到的办法就是把两边的数据查询出来并存入一个临时表,再查询临时表。不过这种方法只是用于不同库中相同或相似的表,比如有的数据量较大的分库项目。
在回过头来看你的项目需求,其实根本不需要跨库的。首先在任意一个库里创建一个表,在发送会议信息给会员的时候,除了这个表的主键之外,只需要记录会员的id和会议的id,这两个id分别从两个库里获取。
你如果要查看某条会议信息发送的详情,就通过这两个id分别从两个库里获取会员信息和会议信息。
你如果要查询出列表,用笨办法,因为你这个表肯定和会员或会议其中一个在一个库了,可以关联,然后在列表循环中逐条查询另一个数据,虽然这样有些影响性能,但是也比“跨库关联查询”好点,况且如果数据多的话,一般都是分页操作的话,一个列表最多二三十条记录,一次查询二三十也不会有太大影响。
另一个笨办法,就是把发送记录列表中所有需要列出的字段都记录在发送会议信息的记录表里,这样就不需要在循环查询另一个表了。但缺点就是这里面的数据就不能和会员以及会议信息的数据同步,除非你在更新会员以和会议信息的数据的同时更新这个表的数据。
但不管用哪种方式,我觉得都比“跨库关联查询”要好,即使真的有“跨库关联查询”的方法。
在这句代码
"FROM " . $GLOBALS['ecs']-table('order_goods')." AS og, ".$GLOBALS['ecs']-table('order_info')." AS oi ".
后面加(注意点号的连接):
" LEFT JOIN ". $GLOBALS['ecs']-table('goods') . "AS g ON og.goods_id = g.goods_id ".
然后在开头的sql语句后面这里加上你要的字段:
$sql = 'SELECT og.goods_id, og.goods_sn, og.goods_name,og.goods_attr, og.goods_number AS goods_num, og.goods_price, g.gonghuojia '.
最后你去测试看一下行不行.