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