根據關係檢索多筆記錄
在處理有關係的資料庫表時,一個常見的任務是根據關係從多個表中檢索資訊特定的關係。例如,考慮兩個表格:組織和員工,其中一個組織可以有多個員工。目標是在單一記錄集中檢索有關特定組織的所有信息,包括其所有員工的名字。
資料庫特定解決方案
此任務的適當方法因所使用的資料庫系統而異。一些流行的資料庫系統提供了可以促進群組串聯的特定函數或特性,即將多個值組合成單一字串的過程:
select o.ID, o.Address, o.OtherDetails, GROUP_CONCAT( concat(e.firstname, ' ', e.lastname) ) as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
select o.ID, o.Address, o.OtherDetails, STRING_AGG( (e.firstname || ' ' || e.lastname), ', ' ) as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
select o.ID, o.Address, o.OtherDetails, LISTAGG((e.firstname || ' ' || e.lastname) ,',') as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
select o.ID, o.Address, o.OtherDetails, STRING_AGG((e.firstname || ' ' || e.lastname) ,',') as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
後備解決方案
在缺乏本機組連接函數或支援舊版的資料庫系統中資料庫,可以採用後備解決方案:
select o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees from organization o
以上是如何在單一查詢中從多個資料庫表中檢索相關記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!