【问题标题】:Accessing Multiple Tables Mysql访问多个表Mysql
【发布时间】:2017-02-09 20:10:14
【问题描述】:

您好,我已经查看了许多与我的问题类似的答案,但没有一个答案不止一个 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 -> num_rows >0){
 //DO SOMETHING }else{//Dont do anything}   
    ?>

示例数据库

groom
id   room   person
1     4       1 

lroom
id   room   person
6     8       1 

try
id   court   person
8    2       1 


$a = 1;

结果应该是 1,6,8 非常感谢任何帮助

【问题讨论】:

  • 查看加入
  • 更新您的问题并添加适当的数据样本和预期结果..请
  • 您的陈述是您要识别存在于所有表中的某些内容。如果是这种情况,那么您想做与您所做的类似的事情,但由于所有 3 个表都有一个列 ID,您需要选择所有三个或只选择一个前缀。你可以使用联合,但你不会得到一行,你最多会得到 3 行作为响应,它会返回任何表的 ID。如果条件是您要验证所有 3 个表中都存在的实体,则联合会出现问题。

标签: mysql select where


【解决方案1】:

如果您需要三个表中相同的值,您可以使用联合

 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";

【讨论】:

    【解决方案2】:

    不完全确定您要做什么,但从它的外观来看,您需要这样的声明:

    $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."'";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 2021-04-10
      相关资源
      最近更新 更多