[英]MySQL join table as nested array
假設我們有以下 2 個表格:
reservations
表: id, time, user_id
users
表: id, name
選擇預訂時,如何在純 MySQL 上獲得以下 output而無需在 php 上手動查詢每個預訂的“用戶”?
因為在循環數以千計的預訂時它變得非常慢。
{
id: 1,
time: "123456789",
user_id: 321,
user: {
id: 321,
name: John Doe
}
}
使用JOIN
:
-- could be wrapped with JSON_ARRAYAGG if needed
SELECT JSON_OBJECT('id', r.id,
'time', r.time,
'user_id', r.user_id,
'user', JSON_OBJECT('id', u.id, 'name', u.name)
) AS result
FROM reservations r
JOIN users u
ON r.user_id = u.id
我認為嵌套結構沒有任何優勢。 只需返回您想要的列:
select r.*, u.name as user_name
from reservation r join
user u
on r.user_id = u.id
您可以通過聯接獲得所需的數據。
SELECT reservations.id, reservations.time, reservations.user_id, users.name FROM reservations LEFT JOIN users ON users.id = reservations.user_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.