我有表1顯示產品之間的子和父母關係。如何使用sql獲取輸出表?基本上,輸入表顯示B是A的孩子,B1和B2是B的孩子。輸出也需要顯示以及B1和B2是A的子代。如何在sql表中輸出父子關係?
回答
我相信你需要是hierarchical queries。
舉個例子,你可以這樣做:
SELECT childproduct, parentproduct
FROM product_table
START WITH parentproduct = 'Product A'
CONNECT BY PRIOR childproduct = parentproduct;
注意:這假定你知道root(頂級)元素是 '產品A'。儘管它也可能沒有它。
這隻會返回立即彼此相關的子對父對:來自您的查詢的結果將是: CHILD \t PARENT 產品B \t產品A ... 產品B1 \t產品B ... 產品B2 \t產品B ... 產品d \t產品B ... 產品D1 \t產品d ... 產品E1 \t產品D1 ... 產品E2 \t產品D1。 .. 產品C \t產品A ... – Sterls
@Sterls感謝您指出。而且,在sqlfiddle上籤出你的答案 - 這真是太酷了!我無法自己測試答案,因爲我的筆記本電腦沒有oracle。 – Bajal
沒問題:)你應該可以在頂部的菜單欄上更改sql提琴上的數據庫引擎,並用MySQL進行測試。 – Sterls
回答你的問題是,在這個sqlfiddle所示:http://sqlfiddle.com/#!4/87657/61
你需要使用一個層次查詢,如下圖所示:
SELECT ChildProduct, CONNECT_BY_ROOT ParentProduct
FROM table_name
WHERE LEVEL >= 1
CONNECT BY PRIOR ChildProduct = ParentProduct
|兒童| CONNECT_BY_ROOTPARENT |
| ------------ | ----------------------- |
|產品B |產品A |
|產品B1 |產品A |
|產品B2 |產品A |
|產品C |產品A |
|產品D |產品A |
|產品D1 |產品A |
|產品E1 |產品A |
|產品E2 |產品A |
|產品B1 |產品B |
|產品B2 |產品B |
|產品D1 |產品D |
|產品E1 |產品D |
|產品E2 |產品D |
|產品E1 |產品D1 |
|產品E2 |產品D1 |
這是ANSI sql格式嗎?或者這是針對Oracle的?謝謝。 – rookie
- 1. SQL - 父子關係排序表
- 2. SQL父子關係查詢
- 3. 如何在sql server2005中創建父子關係?
- 4. 如何在SQL中查詢任意子關係的「父」?
- 5. SQL中的父級子記錄關係?
- 6. 查詢sql中的父子關係
- 7. SQL父子查詢 - 關係在兩個表中定義
- 8. 在SQL Server中設計鄰接列表或父子關係?
- 9. 父子關係
- 10. 父子關係
- 11. 父子關係
- 12. 如何使Postgresql中的父表和子表之間的關係
- 13. 在mysql中獲取父/子/子關係
- 14. SQLAlchemy - 同一表中的父子關係
- 15. SQL查詢父親的孩子關係
- 16. SQL查詢爲父子關係
- 17. LINQ到與父子關係SQL查詢
- 18. 父子關係的SQL查詢遞歸
- 19. graphql查詢SQL父子關係
- 20. 父子關係的LINQ to SQL
- 21. 使用CTE的父子關係Sql Server
- 22. SQL Server - 用父子關係打開XML
- 23. 總結多表父子關係的公共列在SQL Server
- 24. 父子關係 - TSQL
- 25. XSD父子關係
- 26. Hibernate父/子關係
- 27. 與父/子關係
- 28. Qt父子關係
- 29. JPA父/子關係
- 30. 父子關係2005
什麼是數據庫平臺? – OldProgrammer
我需要做的是ANSI sql格式。只要沒有使用數據庫特定的功能,就可以在任何平臺上完成。 – rookie
[SQL for hierarchical relationship]的可能重複(http://stackoverflow.com/questions/11382866/sql-for-hierarchical-relationship) – Bulat