[英]MySQL Query - inner join on multiple fields from the same relating table
[英]MySQL inner join query select from same table multiple times
我相信我已經正確地形成了這個問題標題,因為我不確定如何形成它。 例如,我在下面總結了我的查詢。
我有一個訂單表,其中保存了訂單詳細信息,例如客戶 ID、地址和產品 ID,以及為每個訂單連續訂購的數量。 因此,多個庫存/產品 ID 保存在一行中。
所以我的查詢看起來像:這是一個匯總查詢,以便於解釋我省略了其他各種字段。
SELECT customer.name,customer.address,tbl_order.order_date,tbl_order.product1_id,tbl_order.product2_id,inventory.product1_name,inventory.product2_name
FROM tbl_order
INNER JOIN customer ON tbl_order.customer_id = customer.id
INNER JOIN inventory on tbl_order.product1_id = inventory.id
INNER JOIN inventory on tbl_order.product2_id = inventory.id
where YEAR(tbl_order.order_date)='$year'
所以我的問題是如何根據 tbl_order 中的每個產品 id 從庫存表中獲取庫存詳細信息。 我正在運行一個while循環來顯示一年的所有數據
while($row=mysqli_fetch_assoc($sql1))
我可以將此查詢分為 2 並單獨運行庫存查詢,然后如何組合 while 循環,因為有時當某些產品不在訂單表中時也可能存在空查詢(取決於訂購的訂單,並非所有產品都已訂購) 所以這不起作用
while($row=mysqli_fetch_assoc($sql1)) and ($row1=mysqli_fetch_assoc($inv1)) and ($row2=mysqli_fetch_assoc($inv2))
等 10 種產品
首先,您的數據庫設計很糟糕,我建議您規范化您的數據庫。
其次,如果您不能重新設計數據庫,您可以使用多個帶有別名的連接,例如:
SELECT
customer.name, customer.address, tbl_order.order_date,
tbl_order.product1_id, inv1.product1_name,
tbl_order.product2_id, inv2.product2_name
FROM tbl_order
INNER JOIN customer ON tbl_order.customer_id = customer.id
INNER JOIN inventory AS inv1 ON tbl_order.product1_id = inv1.id
INNER JOIN inventory AS inv2 ON tbl_order.product2_id = inv2.id
WHERE YEAR(tbl_order.order_date)='$year'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.