我想要搜索屬於OrderID的所有單元,並搜索屬於所研究單元的所有子單元。PHP選擇所有數據及其所有子數據(嵌套查詢)
所以,我需要這種方式進行過濾:
從表「單位」所有數據,其中IDorder = $ IDOrder ,並從表「單位」,其中IDMainUnit屬於搜索單元從搜索所有數據第一個選擇。
一切正常,2選擇查詢,但現在我想只使用一個選擇查詢。
我試着這樣說:
"SELECT * from units r1 LEFT JOIN units r2 ON r2.IDMainUnit = r1.IDUnit WHERE r1.IDOrder = :IDOrder"
但它似乎並沒有工作。 我正在研究JOIN的行爲,但我仍然需要提供更多的經驗。
你能給我一個關於如何進行的建議嗎?
如果IDOrder是例如4,我應該接受以下行:
+---------+--------+------------+-------------+-------+
| IDOrder | IDUnit | IDMainUnit | Description | Price |
+---------+--------+------------+-------------+-------+
| 4 | 5 | | Product1 | 55.15 |
| | 6 | 5 | SubProduct1 | 12.15 |
| | 7 | 5 | SubProduct2 | 13.45 |
| 4 | 8 | | Product2 | 12.30 |
| 4 | 9 | | Product3 | 10.15 |
| | 10 | 9 | SubProduct3 | 08.50 |
+---------+--------+------------+-------------+-------+
編輯:我編輯的表有更好的格式。我只有1個表,但問題是,對於子產品,我沒有引用IDOrder,但僅引用了IDMainUnit。
我可以寫2 SELECT,如:
SELECT * FROM Units WHERE IDOrder = :IDOrder
while (PDO:fetch){
$IDUnit = $PDO['IDUnit'];
SELECT * FROM Units WHERE IDMainUnit= $IDUnit
while(PDO2:fetch){
}
}
但我不喜歡這樣,因爲如果我在一個表中呈現的一切,那麼我必須複製的代碼的2倍,它變得更加困難保持。 這就是爲什麼我試圖複製2個查詢僅1次查詢
你能分享你的桌子嗎? –
請提供樣本數據。 –
'一切工作良好與2選擇查詢... ...但你只向我們展示了其中一個查詢。 –