[英]Select rows from a table2 based on a value from table1
我試圖從一個表中檢索數據,我想從一個表中獲取所有行,其中一個列可能是多個值,即
表格1
Id User SiteID
--------------------
1 - Ali - 6
--------------------
2 - Ali - 7
--------------------
3 - Ali - 8
--------------------
4 - Jack - 20
--------------------
因此,在表中,一個Ali擁有站點6,7,8,而jack僅有站點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中的所有事件和位置,其中站點是表1中Ali擁有的站點,因此所需的結果應為我提供以下內容。
Id Event Location SiteID
-------------------------------------------
2 - Fault - Reception - 6
-------------------------------------------
3 - Isolation - Student Hall - 7
-------------------------------------------
4 - Bomb Alert - Floor 3 - 8
-------------------------------------------
誰能建議我可以做到這一點。 謝謝
您可以使用一個查詢而不是兩個查詢:
SELECT Table2.*
FROM Table1
INNER JOIN Table2 ON Table1.SiteID = Table2.SiteID
WHERE Table1.User = 'Ali'
ORDER BY Id DESC
LIMIT 300
將t2。*更改為只想顯示的所需列。 例如:t2.SiteID,t2.xxxx
SELECT t1.*, t2.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.SiteID = t2.SiteID
WHERE user = ‘Jack’
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.