php多表查询后调不出b表数据库,一个mysql多表查询的问题

求问一个数据库问题。 user表有一个real_name字段,表示用户姓名。plag表有两个字段 user_id1, user_id2, 现在要查询plag表中的所有信息,同时把user_id1, user_id2对应user表中的real_name也输出出来。怎么写sql?

比如: user表用两条记录:

id: 1 real_name: Tom

id: 2 real_name: Mike

plag表有这样一条记录

id: 1 user_id1: 1 user_id2: 2

我希望能把plag以这样的形式输出:

id: 1 name1: Tom name2: Mike

求大神给出sql并解释

回复内容:

求问一个数据库问题。 user表有一个real_name字段,表示用户姓名。plag表有两个字段 user_id1, user_id2, 现在要查询plag表中的所有信息,同时把user_id1, user_id2对应user表中的real_name也输出出来。怎么写sql?

比如: user表用两条记录:

id: 1 real_name: Tom

id: 2 real_name: Mike

plag表有这样一条记录

id: 1 user_id1: 1 user_id2: 2

我希望能把plag以这样的形式输出:

id: 1 name1: Tom name2: Mike

求大神给出sql并解释

select plag.id, group_concat(user.name order by user.id) as real_names from plag left join user on plag.user_id1 = user.id or plag.user_id2 = user.id

这句虽然输出有点出入,但是应该也符合题主的需求,输出结果应该为:

id | realnames

1 | Tom,Mike

得到的 realnames 是以 user.id 按序排列的,结果集是可操作的。

下面这句可以得到楼主希望的输出:

select plag.id,(select user.name from plag inner join user on user.id = plag.user_id1) as name1, (select user.name from plag inner join user on user.id = plag.user_id2) as name2 from plag

输出应该为:

id | name1 | name2

1 | Tom | Mike

应该使用 INNER JOIN 方式吧

参考 http://www.w3school.com.cn/sql/sql_join_inner.asp

select p.id, u1.real_name as name1, u2.real_name as name2

from plag p, user as u1, user as u2

where p.user_id1 = u1.id and p.user_id2 = u2.id;

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值