簡體   English   中英

根據table1中的值從table2中選擇行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM