Вернуть SQL один ко многим / один ко многим все в одном массиве / объекте PHP? - PullRequest
2 голосов
/ 02 июня 2011

tbl_customers<br> customer_id INT<br> ...<br> ...

tbl_orders<br> order_id<br> customer_id </p> <p>tbl_orders_products<br> product_id<br> order_id

Предположим, я хочу получить доступ ко всем продуктам, заказанным по всем заказам одним клиентом?
Можно ли вернуть это в одном PHPмассив, используя только 1 SQL-запрос (MySQL DB)?

Ожидаемый результат:

массив (

[customer_id] => 1,
[orders] => array (

[0] => массив (

[order_id] => [1],
[products] => массив (

[0] => массив (

[product_name] => 'widget')

)
)
)

1 Ответ

1 голос
/ 02 июня 2011

возможно.

вы можете использовать левые соединения между каждой таблицей, но в каждой строке будет содержаться вся информация о пользователе и информация о заказе, а также информация о конкретном элементе

example result rows
user_id, username, order_id, product_id_1
user_id, username, order_id, product_id_2
user_id, username, order_id, product_id_3

затем вы можете отформатировать его в нужный массив.

...