Postgres tarafından bağlamak için bir eşdeğer var. Modülü etkinleştirmeniz gerekecek. Varsayılan olarak kapalı.
tablefunc olarak adlandırılır. Bazı serin çapraz işlevselliği yanı sıra tanıdık " ile bağlayın" ve " ile Başlat" destekler. Bunu tekrarlayan CTE'den çok daha net ve mantıklı bir şekilde çalıştığını buldum. Bunu DBA'nız tarafından açamıyorsanız, Erwin'in yaptığı gibi gitmelisiniz.
"Malzeme listesi" türü sorgusunu da yapacak kadar sağlam.
Tablefunc bu komutu çalıştırarak açılabilir:
İşte
CREATE EXTENSION tablefunc;
taze resmi belgelerinden kaldırdı bağlantı alanlarının listesi aşağıdadır.
Parameter: Description
relname: Name of the source relation (table)
keyid_fld: Name of the key field
parent_keyid_fld: Name of the parent-key field
orderby_fld: Name of the field to order siblings by (optional)
start_with: Key value of the row to start at
max_depth: Maximum depth to descend to, or zero for unlimited depth
branch_delim: String to separate keys with in branch output (optional)
Gerçekten de dokümanlar sayfasına bir göz atmalısınız. İyi yazılmış ve size alışkın olduğunuz seçenekleri verecektir. (Belge sayfasında aşağıya doğru, aşağıya doğrudur.)
Postgreql "Connect by" extension Aşağıda, bu yapının nasıl bir araya getirileceğinin açıklaması açıklanmıştır. Bir ton potansiyel var, bu yüzden bunu adalet yapmayacağım, ama işte size bir fikir vermek için bir ipucu.
connectby(text relname, text keyid_fld, text parent_keyid_fld
[, text orderby_fld ], text start_with, int max_depth
[, text branch_delim ])
Gerçek bir sorgu şöyle görünecektir. Connectby_tree, tablonun adıdır. "AS" ile başlayan satır, sütunları nasıl adlandırdığınızdır. Biraz baş aşağı görünüyor.
SELECT * FROM connectby('connectby_tree', 'keyid', 'parent_keyid', 'pos', 'row2', 0, '~')
AS t(keyid text, parent_keyid text, level int, branch text, pos int);
Sana [özyinelemeli İLE] kullanmak istediğiniz düşünüyorum (http://www.postgresql.org/docs/9.3/static/queries-with.html) –
http://stackoverflow.com/ q/22626394/330315 –