[英]how do i select the same row from one table for different values in another table + sql
[英]How can i do a recursive select from the same Table in SQL?
我有一張表,內容如下
Table1:
ObjectName Field Type Link
Account Name String
Asset AccountId Guid Account
Asset Name String
Account BillingStreet String Details
Details FirstName String Order
Order OrderNo Integer
Order OrderItem String
主要參考點是資產。 我的意思是我可以從 Table1 中選擇 *,其中 ObjectName = 'Asset'。 那會給我2行。 但是有一個鏈接到資產即帳戶。 因此,如果上面的選擇中有一個鏈接,則選擇具有該名稱的所有行
所以像:
select * from Asset ,如果 Link 列中有一個值,則選擇所有具有 Link Name 的 ObjectName 的行,然后繼續直到沒有更多的行。 所以它會在選擇訂單時完成
因為訂單上沒有鏈接
如果我要從 Table1 中選擇 *,其中 ObjectName = 'Account',那么由於行中有一個鏈接,我需要選擇 Details 行,而 details 又具有指向 Order 的鏈接,我需要選擇Order 並且因為 Order 沒有 Link ,就是這樣
我如何在 sql 中執行這個復雜的查詢,不知道從哪里開始?
我如何在 sql 中執行這個復雜的查詢?
您正在描述分層查詢。 不同數據庫的語法略有不同(並非所有數據庫都實現此功能),但其思想是:
with recursive cte (objectname, field, type, link) as (
select t.* from table1 t where objectname = 'Asset'
union all
select t.*
from table1 t
inner join cte c on c.link = t.objectname
)
select * from cte
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.