高分求助!PHP,联合查询的问题,查询表2无表1有的数据?
表一user、用户信息,user_name为名字,user_class为班级表二vote、投票信息,to_id是受评人ID,from_ID投票人ID,from_name投...
表一user、用户信息,user_name为名字,user_class为班级
表二vote、投票信息,to_id是受评人ID,from_ID投票人ID,from_name投票人名字。
我做一个互动投票系统,同班级的用户才能互投票。我想实现一个功能:
用户aaaa登录后,想要查询自己 还没有 投过票的有哪些同班用户信息,并显示这些用户的信息。按之前的方法不行。示例的结果应该是: 展开
表二vote、投票信息,to_id是受评人ID,from_ID投票人ID,from_name投票人名字。
我做一个互动投票系统,同班级的用户才能互投票。我想实现一个功能:
用户aaaa登录后,想要查询自己 还没有 投过票的有哪些同班用户信息,并显示这些用户的信息。按之前的方法不行。示例的结果应该是: 展开
4个回答
2013-09-04 · 知道合伙人软件行家
关注
展开全部
//首先需要知道自己的id号,且认为存在session中的,并且已经传了过来
$myID = $_SESSION['id'];
$sql = "SELECT * FROM user WHERE user_class = (SELECT user_class FROM user WHERE user_id='".$myID."') AND user_id NOT IN (SELECT to_id FROM vote WHERE from_id = '".$myID."')";
SELECT user_class FROM user WHERE user_id='".$myID."' 选出我所在的班级
SELECT to_id FROM vote WHERE from_id = '".$myID."' 选出我投过的人的id
最终是选出我所在的班级,且不在我投过的id范围内的用户的信息
追问
高手果然厉害,一次成功!能够查询到自己未投票的同班同学,不过也把自己给显示出来,该如何改进?
追答
这个也比较简单,但是输出的时候要判断一下
$sql = "SELECT * FROM user WHERE (user_class = (SELECT user_class FROM user WHERE user_id='".$myID."') AND user_id NOT IN (SELECT to_id FROM vote WHERE from_id = '".$myID."')) OR (user_id = '".$myID."')";
//输出的时候要判断是不是自己
while($row = mysql_fetch_array($result)){
if($row['user_id'] == $myID){
echo '这是我自己的信息';
}
}
展开全部
select a.*,b.to_id from table1 a,table2 b where a.user_id != b.to_id
试试这个,table1 是你的第一个表的表名,table2是第二个表的表名
试试这个,table1 是你的第一个表的表名,table2是第二个表的表名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select user_id, user_name from user where user_id not in (select from_id from vote group by from_id);
这是SQL. 你试验下.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
not in就是专门解决这个问题的
追问
本人菜鸟,愿闻其详!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询