Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[求助] 求两个数据表的关联PHP调用数据代码

[复制链接]
我的第一次 发表于 2013-10-8 22:53:28 | 显示全部楼层 |阅读模式
本帖最后由 我的第一次 于 2013-10-10 15:18 编辑

数据库a 里面有两个表B.C,B表里面user con,c表里面UID poto,
C表里面的UID的值是B表里面的user值。
现在我想查询c表里面的UID=user的值调用出

                $query = DB::query('SELECT * FROM '.DB::table('c'));
                $row = list = array();
                while($row = DB::fetch($query)) {
                $list[] = $row;
                }
模板里调用值是(我想加个条件UID = user 才显示$row['UID'])
<!--{loop $list $row}-->
<a>$row['UID']</a>                        
<!--{/loop}-->        
---------------------------------------------------------------------------------------
首先谢谢   四叶草工作室 提供的方法。
$query = DB::query('SELECT * FROM '.DB::table('b').' b , '.DB::table('c').' c WHERE c.UID=b.user ');
                $row = list = array();
                while($row = DB::fetch($query)) {
                $list[] = $row;
                }

这个方法是可以,不过剩下的数据怎么调用呢?我是想把uid=user的值和不等于user的值都调用出来,分开两组都分别调用出来
---------------------------------------------------------------------------------------
b表   字段: uid\user
         内容:1   3
                    2   4
                    3   0
                    4   0
c表   字段: name\uid
         内容: a   1
                     b   2
                     c    3
                     d    4
想要列出C表的内容,取B表中user=C表中uid的优先顺序(34),B表中user不存在的C表uid排到后面(12)
需要的结果输出是:3412
-----------------------------------------------------------------------------------------
请高手帮忙写出来



四叶草工作室 发表于 2013-10-8 23:06:14 | 显示全部楼层
本帖最后由 四叶草工作室 于 2013-10-8 23:11 编辑

方法1.
$query = DB::query('SELECT * FROM '.DB::table('b').' b , '.DB::table('c').' c WHERE c.UID=b.user ');
                $row = list = array();
                while($row = DB::fetch($query)) {
                $list[] = $row;
                }

方法2
<!--{loop $list $row}-->
<!--{if $row['UID'] == $row[user] }-->
<a>$row['UID']</a>
<!--{/if}-->
<!--{/loop}-->   
回复

使用道具 举报

 楼主| 我的第一次 发表于 2013-10-8 23:29:39 | 显示全部楼层
四叶草工作室 发表于 2013-10-8 23:06
方法1.
$query = DB::query('SELECT * FROM '.DB::table('b').' b , '.DB::table('c').' c WHERE c.UID=b ...

方法2的PHP怎么写呢? 两个表都可以用$row吗?
回复

使用道具 举报

四叶草工作室 发表于 2013-10-9 13:37:46 | 显示全部楼层
推荐用方法1 ,$query = DB::query('SELECT * FROM '.DB::table('b').' b , '.DB::table('c').' c WHERE c.UID=b.user ');
这句意思就是联合查询,这是提高MYSQL效率很好的优化方案,既能实现你要的结果又能优化效率
回复

使用道具 举报

IvanDZ 发表于 2013-10-9 14:13:04 | 显示全部楼层
2楼不适用join 也好意思叫效率很好

select B.* ,C.* from B left join C on B.user = C.UID
回复

使用道具 举报

 楼主| 我的第一次 发表于 2013-10-9 16:14:30 | 显示全部楼层
本帖最后由 我的第一次 于 2013-10-9 16:16 编辑
四叶草工作室 发表于 2013-10-9 13:37
推荐用方法1 ,$query = DB::query('SELECT * FROM '.DB::table('b').' b , '.DB::table('c').' c WHERE c. ...

这个方法是可以,不过剩下的数据怎么调用呢?我是想把uid=user的值和不等于user的值调用出来,分开两组
回复

使用道具 举报

 楼主| 我的第一次 发表于 2013-10-9 21:27:49 | 显示全部楼层
有人解答吗
回复

使用道具 举报

四叶草工作室 发表于 2013-10-9 23:57:03 | 显示全部楼层
IvanDZ 发表于 2013-10-9 14:13
2楼不适用join 也好意思叫效率很好

select B.* ,C.* from B left join C on B.user = C.UID

join左连接楼主更难懂啊,我们要从简单的开始。
回复

使用道具 举报

 楼主| 我的第一次 发表于 2013-10-10 07:52:55 | 显示全部楼层
四叶草工作室 发表于 2013-10-9 23:57
join左连接楼主更难懂啊,我们要从简单的开始。

第二种方法不能用呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 01:18 , Processed in 0.054474 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表