簡體   English   中英

MySQL 查詢 - 同一相關表中多個字段的內部聯接

[英]MySQL Query - inner join on multiple fields from the same relating table

Tables Stores 包含有關商店及其主管和助理收銀員的信息。 LeadCashier 和 AssistantCashier 是從表 Employees 中選擇的。

專賣店

StoreID | StoreName | LeadCashierID | AssistantCashierID
001     | Store1    |      1        |         2
002     | Store2    |      1        |         3
003     | Store3    |      2        |         3

雇員

EmployeeID | EmployeeName
1          | John
2          | Paul
3          | Steve

我需要設置一個查詢來顯示 StoreID、LeadCashier 的姓名和 AssistantCashier 的姓名。 我會構建與此類似的查詢,但是我不知道如何在單個查詢中回應 LeadCashier 的名稱和 AssistantCashier 的名稱。

SELECT StoreID, StoreName, EmployeeName FROM Stores
JOIN Employees ON Employees.EmployeeID = Stores.LeadCashierID 
JOIN Employees ON Employees.EmployeeID = Stores.AssistantCashierID

您只需要表別名:

SELECT s.StoreID, s.StoreName, le.EmployeeName as LeadName,
       ae.EmployeeName as AssistantName
FROM s.Stores JOIN
     Employees le
     ON le.EmployeeID = s.LeadCashierID JOIN
     Employees ae
     ON ae.EmployeeID = s.AssistentCashierID;

提示:將表縮寫用作表別名。 它們使查詢更易於跟蹤。

您可以使用表別名。

$sql = "SELECT StoreID, StoreName, leadCashier.EmployeeName as 
LeadCashier, 
assCashier.EmployeeName as AssistantCashier 
FROM Stores
JOIN Employees leadCashier ON leadCashier.EmployeeID = 
Stores.LeadCashierID 
JOIN Employees assCashier ON assCashier.EmployeeID = 
Stores.AssistantCashierID";
$result = $db->query($sql);

echo "<table>";
echo "<tr><th>Store ID</th><th>Store Name</th><th>Lead Cashier</th> 
<th>Assistant Cashier</th></tr>";

if ($result->num_rows > 0) {
// output data of each row
    while($row = $result->fetch_assoc()) {
    echo "<tr>";
    echo "<td>" . $row["StoreID"]. "</td>";
    echo "<td>" . $row["StoreName"]. "</td>";
    echo "<td>" . $row["LeadCashier"]. "</td>";
    echo "<td>" . $row["AssistantCashier"]. "</td>";
    echo "</tr>";
    }
} else {
    echo "0 results";
}
echo "</table>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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