Php 根据表1中的值从表2中选择行

Php 根据表1中的值从表2中选择行,php,mysql,sql,database,mysqli,Php,Mysql,Sql,Database,Mysqli,我试图从一个表中检索数据,我想从一个表中获取所有行,其中一列可以是多个值,即 表1 Id User SiteID -------------------- 1 - Ali - 6 -------------------- 2 - Ali - 7 -------------------- 3 - Ali - 8 -------------------- 4 - Jack - 20 -------------------- 因此,从表1中可

我试图从一个表中检索数据,我想从一个表中获取所有行,其中一列可以是多个值,即

表1

Id     User   SiteID
--------------------
 1  -  Ali   -  6
--------------------
 2  -  Ali   -  7
--------------------
 3  -  Ali   -  8
--------------------
 4  -  Jack  -  20
--------------------
因此,从表1中可以看出,阿里有6,7,8个位置,杰克只有20个位置。现在我有另一张桌子了

表2

    Id     Event         Location     SiteID
    -------------------------------------------
     1  -  Fire       -  Room 22      -  101
    -------------------------------------------
     2  -  Fault      -  Reception    -  6
    -------------------------------------------
     3  -  Isolation  -  Student Hall -  7
    -------------------------------------------
     4  -  Bomb Alert -  Floor 3      -  8
    -------------------------------------------
我想从表2中选择数据,其中SiteID是Ali拥有的站点,即Ali拥有SiteID的6,7,8

因此,最初使用php,我可以使用以下方法从表1中获取记录:

 $query="SELECT * FROM Table1 WHERE User='Jack'";
                $result = mysqli_query($con,$query) or die(mysql_error());
                while($row11=mysqli_fetch_array($result,MYSQLI_ASSOC)){ 
                    $site=$row11["SiteID"];
                    echo $mySite;      
}
现在我想从表2中选择,其中SiteID是分配给Ali的站点,即站点6,7,8

因此,我尝试了以下方法,但没有完成任务:

$sql_query="SELECT * FROM Table2 WHERE SiteID='$site' ORDER BY Id DESC LIMIT 300";
                $result_set=mysqli_query($con,$sql_query);

                   while($row=mysqli_fetch_array($result_set,MYSQLI_ASSOC))
                    {

                        echo $row["Event"];
                        echo $row["Location"];
                   }
然而,这并没有给我渴望的结果。我想要表2中的所有事件和位置,其中站点是Ali从表1中获得的站点,因此期望的结果应该给我以下信息

     Id     Event         Location     SiteID
    -------------------------------------------
     2  -  Fault      -  Reception    -  6
    -------------------------------------------
     3  -  Isolation  -  Student Hall -  7
    -------------------------------------------
     4  -  Bomb Alert -  Floor 3      -  8
    -------------------------------------------
有人能建议我如何做到这一点吗。谢谢

您可以使用一个查询而不是两个:

选择表2*
来自表1
Table1.SiteID=Table2.SiteID上的内部联接Table2
其中表1.User='Ali'
按Id描述订购
限额300
您可以使用一个查询而不是两个:

选择表2*
来自表1
Table1.SiteID=Table2.SiteID上的内部联接Table2
其中表1.User='Ali'
按Id描述订购
限额300

将t2.*更改为只显示所需的列。 例如:t2.SiteID,t2.xxxx

SELECT t1.*, t2.*
FROM table1 t1
 LEFT JOIN table2 t2 ON t1.SiteID = t2.SiteID
WHERE user = ‘Jack’

将t2.*更改为只希望显示的所需列。 例如:t2.SiteID,t2.xxxx

SELECT t1.*, t2.*
FROM table1 t1
 LEFT JOIN table2 t2 ON t1.SiteID = t2.SiteID
WHERE user = ‘Jack’

使用左连接使用左连接