我想要的是從資料庫中獲取針對特定 id 的記錄,并且在該獲取的記錄中,我想從那些獲取的記錄中獲取更多針對特定 id 的記錄,這些記錄可能類似于嵌套陣列結構。讓我用一個例子來澄清一下。
我有三個表,一個是訂單,另一個是專案,最后一個是子專案。
orders表存盤唯一的訂單,items表存盤針對特定訂單 id 的多個專案,sub items 表存盤針對特定 item_id 的多個子專案,并且 sub item 表可能會或可能不會存盤任何內容,具體取決于專案的必需品/需要。
我的表格如下。
訂單表:-
| ID | order_id | 一個 | b | C |
|---|---|---|---|---|
| 1 | 123456 | xyz | xyz | xyz |
| 2 | 413211 | xyz | xyz | xyz |
物品表:-
| ID | order_id | 一個 | b | C |
|---|---|---|---|---|
| 5 | 123456 | xyz | xyz | xyz |
| 7 | 123456 | xyz | xyz | xyz |
| 8 | 413211 | xyz | xyz | xyz |
子專案表:-
| ID | order_id | item_id | b | C |
|---|---|---|---|---|
| 1 | 123456 | 5 | xyz | xyz |
| 2 | 123456 | 5 | xyz | xyz |
| 3 | 123456 | 7 | xyz | xyz |
| 4 | 123456 | 7 | xyz | xyz |
| 5 | 123456 | 7 | xyz | xyz |
| 6 | 413211 | 8 | xyz | xyz |
| 7 | 413211 | 8 | xyz | xyz |
子專案表中的 item_id 是映射到專案表中專案的外鍵。現在我不想運行 3 個查詢來完成作業,我想要的是一個查詢,它給了我一個嵌套陣列,它具有類似于以下結構的東西。
array(
order_id_1 => array(
item_1 => array(
sub_item_1 => array(
),
sub_item_2 => array(
),
),
item_2 => array(
sub_item_1 => array(
),
sub_item_2 => array(
),
sub_item_3 => array(
)
),
),
order_id_2 => array(
item_3 => array(
sub_item_1 => array(
),
sub_item_2 => array(
),
)
)
)
使用單個查詢可以實作這樣的事情嗎?
PS:標題可能不清楚,提問可能有錯誤,因為這是我在stackoverflow上的第一個問題,任何編輯和更正將不勝感激。
uj5u.com熱心網友回復:
關于將查詢組合在一起,我認為您可以將所有表連接在一起:
SELECT * FROM orders O
LEFT JOIN items I ON O.id = I.order_id
LEFT JOIN sub_items SI ON I.id = SI.item_id AND O.id = SI_order_id
但是,這不會回傳嵌套陣列。您必須撰寫代碼以在 PHP 中嵌套陣列。
一些框架使用 ORM 支持這種查詢(它將回傳物件而不是陣列)。例如,在 Yii2 中,它被稱為急切加載。https://www.yiiframework.com/wiki/834/relational-query-lazy-loading-and-eager-loading-in-yii-2-0
uj5u.com熱心網友回復:
此SO 問題的可能重復項。你需要寫幾行腳本來調整
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422025.html
標籤:
上一篇:在SQLDeveloper中從CLOB中獲取JSON
下一篇:如何模糊查詢一個串列?
