Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问多个表Mysql_Mysql_Select_Where - Fatal编程技术网

访问多个表Mysql

访问多个表Mysql,mysql,select,where,Mysql,Select,Where,嗨,我已经看过很多类似于我的问题的答案,但是没有一个答案超过一个。 我试图查看我的数据库中是否有跨多个表的内容 我的守则如下: <?php $sql = "SELECT id FROM groom, lroom, try WHERE groom.person = $a AND lroom.person = $a AND try.person = $a"; $result = $conn -> query ($sql); if($result -&

嗨,我已经看过很多类似于我的问题的答案,但是没有一个答案超过一个。 我试图查看我的数据库中是否有跨多个表的内容

我的守则如下:

<?php 


$sql = "SELECT id FROM groom, lroom, try WHERE groom.person = $a AND lroom.person = $a AND try.person = $a";

        $result = $conn -> query ($sql);


     if($result -> num_rows >0){
 //DO SOMETHING }else{//Dont do anything}   
    ?>
结果应为1,6,8
非常感谢您提供的任何帮助

并不确切地知道您想做什么,但从外观上看,您需要这样的陈述:

$sql = "SELECT groom.id AS groomid, lroom.id AS lroomid, try.id AS tryid FROM groom, lroom, try WHERE groom.person = ".$a." AND lroom.person = ".$a". AND try.person = ".$a;
如果
$a
不是整数或布尔值,则在SQL语句中添加引号:

$sql = "SELECT groom.id AS groomid, lroom.id AS lroomid, try.id AS tryid FROM groom, lroom, try WHERE groom.person = '".$a."' AND lroom.person = '".$a"'. AND try.person = '".$a."'";

如果需要3个表中的相同值,可以使用union

 select id 
 from groom
 where groom.person = $a
 union 
 select id 
 from lroom
 where lroom.person = $a
 union 
 select id 
 from try
 where try.person = $a
您只需要匹配所有3个表的值

  SELECT id 
  FROM groom
  inner join on groom.person  = lroom.person 
  inner join try on groom.person = try.person 
  where groom.person= $a";

查看join on更新您的问题,并添加适当的数据样本和预期结果。。请注意,您的声明是要标识所有表中存在的内容。如果是这种情况,那么您希望执行类似于您所做的操作,但是由于所有3个表都有一个列ID,因此您需要选择所有三个表,或者只选择一个带前缀的表。您可以使用union,但不会得到一行,最多可以得到3行作为响应,它将返回任何表的ID。如果条件是要验证所有3个表中存在的实体,则该联合将出现问题。
  SELECT id 
  FROM groom
  inner join on groom.person  = lroom.person 
  inner join try on groom.person = try.person 
  where groom.person= $a";