Php 根据表1中的值从表2中选择行
我试图从一个表中检索数据,我想从一个表中获取所有行,其中一列可以是多个值,即 表1Php 根据表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中可
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’
使用左连接使用左连接