PSQL

2009-09-22 10 views
17

में किसी अन्य तालिका से प्राप्त होने वाली बाल सारणी कैसे खोजें PSQL में, क्या किसी अन्य तालिका से प्राप्त होने वाली सभी तालिकाओं को ढूंढने का एक अच्छा तरीका है? आदर्श रूप से, मैं एक SQL क्वेरी से डेटा प्राप्त कर सकता था, लेकिन इस बिंदु पर, मैं किसी भी विश्वसनीय विधि से खुश हूं।PSQL

उत्तर

30

"एसक्यूएल क्वेरी से" का क्या मतलब है? क्या इसका मतलब आईएन pg_inherits से आपके लिए पर्याप्त नहीं है?

SELECT pg_inherits.*, c.relname AS child, p.relname AS parent 
FROM 
    pg_inherits JOIN pg_class AS c ON (inhrelid=c.oid) 
    JOIN pg_class as p ON (inhparent=p.oid); 
+0

जब मैं लिखा था " एसक्यूएल क्वेरी ", मेरा मतलब था कि मैं कमांड लाइन पर पीएसक्यूएल को पास कर सकता था, क्योंकि कुछ ऐसा करने के विपरीत \ d जिसे इंटरैक्टिव रूप से चलाया जाना चाहिए। तो pg_inherits से चयन करना एक अच्छी शुरुआत है। मुझे टेबल सूची तालिका नाम और उनके ओड्स कहां मिल सकता है? – Watusimoto

+0

दास perfekt है! वीएलन डंक! – Watusimoto

+2

वाटसिमोटो - \ डी को कमांड लाइन पर psql पर भी पास किया जा सकता है :) –

2

आप भी स्कीमा नाम की जरूरत है:

SELECT cn.nspname AS schema_child, c.relname AS child, pn.nspname AS schema_parent, p.relname AS parent 
FROM pg_inherits 
JOIN pg_class AS c ON (inhrelid=c.oid) 
JOIN pg_class as p ON (inhparent=p.oid) 
JOIN pg_namespace pn ON pn.oid = p.relnamespace 
JOIN pg_namespace cn ON cn.oid = c.relnamespace 
WHERE p.relname = 'your table name' and pn.nspname = 'your schema name' 
1

आप मास्टर विभाजन से सभी बच्चे की पता लगाना चाहते हैं तो आप बस इसे पसंद पर अमल कर सकते हैं:

SELECT relname 
FROM pg_class,pg_inherits 
WHERE pg_class.oid=pg_inherits.inhrelid 
AND inhparent 
IN (SELECT oid FROM pg_class WHERE relname='your_master_partition') 
ORDER BY relname; 
संबंधित मुद्दे