使用where子句具有两个不同表的值来执行mysqli查询时很困难

时间:2016-04-16 12:29:39

标签: php mysqli

这是我的PHP代码:

<?php
$flag=1;
$status=1;
$output=$row=$row1=$result1="";
$connect=mysqli_connect("localhost","root","*********","mydbrun");
//$sql="SELECT * FROM users WHERE flag='".$flag."' AND       username!='".$_COOKIE['usernam']."'";
$sql="SELECT *
FROM users U, friends F
WHERE
CASE

WHEN F.person_one = '".$_COOKIE['usernam']."'
THEN F.person_two = U.id
WHEN F.person_two= '".$_COOKIE['usernam']."'
THEN F.person_one= U.id
END

AND 
CASE
WHEN F.status='".$status."' AND U.flag='".$flag."'
THEN F.status=U.flag
END ";

$result=mysqli_query($connect,$sql);
if(mysqli_num_rows($result)>0){
 $output.="<ul class='w3-ul '>";
 while($row=mysqli_fetch_array($result)){
     $output.="
     <div class='w3-dropdown-hover w3-accordion w3-container'><li      class='w3-teal w3-hover-green w3-margin w3-padding useron' style='width:100%'><i     class='fa fa-user'></i> ".$row['U.username']." <i class='fa fa-sort-desc'></i></li><div class='w3-dropdown-content w3-accordion-content w3-border w3-small w3-animate-left' ><a data-id4='".$row['U.username']."' id='userprofile' class='w3-btn w3-teal w3-hover-indigo'>profile</a>";
$user=$row['U.username'];
$connect1=mysqli_connect("localhost","root","*********","mydbrun");
$sql1="SELECT AVG(distance) FROM data WHERE user='".$user."'";
$result1=mysqli_query($connect1,$sql1);
if(mysqli_num_rows($result1)>0){
$row1=mysqli_fetch_array($result1);}
     else{ $row1=array("AVG(distance)"=>"not enough runs!");}
     $output.="<div  class='w3-btn w3-border w3-teal w3-hover-indigo'   style='width:100%' id='avgkms'>".$row1['AVG(distance)']." kms/run</div></div>  </div>";
 }
  $output.="</ul>";
 }
 else {
 $output="<ul class='w3-ul'><li class='w3-red w3-margin w3-text-white'><i     class='fa fa-exclamation-triangle'></i> No user is online now</li></ul>";
 }
echo $output; 
?>

在查询中,我想选择所有朋友和在线用户并显示它们。在用户表(由U表示)中,有id,用户名,密码,电子邮件和标志(当用户在线时为flag = 1,否则为0)列。 在朋友表中,我有person_one,person_two和status。 person_one和person_two是复合主键,person_one和person_two是引用users表的id列的外键。 有了这些信息,有人可以告诉我我的SQL查询有什么问题。我不太了解when和then子句以及从多个表中选择数据。 提前致谢。 $ _COOKIE ['usernam']是将要查看在线好友列表的用户。

0 个答案:

没有答案