Bir tablo döndüren bir işlev var. Eğer SELECT * FROM some_function(12345)
çalıştırırsanız"Yoğunlaştırılmış" PostgreSQL satırını ayrı sütunlara nasıl genişletebilirsiniz?
sonucudur:
object_id | name
----------------
12345 | "B"
Eğer sonucudur SELECT some_function(12345)
çalıştırırsanız:
some_function
-------------
(12345,"B")
Sorun bireysel erişebilmesi için ben (orijinal formu istememizdir sütun değerleri), ancak some_function()
argümanını bir tablodaki bir sütundan gel. Ben SELECT some_function(thing_id) FROM things
yürütebileceği ancak bu döndürür:
some_function
-------------
(12345,"B")
(12346,"C")
(12347,"D")
ne döndü istiyorum Oysa:
object_id | name
----------------
12345 | "B"
12346 | "C"
12347 | "D"
Peki nasıl bir "içi çelikten kurtar" veya böyle bir yoğunlaştırılmış satır "genişletmek" olabilir?
PostgreSQL 9.3 veya daha yeni kullanım örtülü bir yan sorguyu
'f. *' Nereden geliyor? Yanal bir katılımın örtük olabileceğini bilmiyordum. Bence bu iyi bir şey değil ve hatta bundan bahsedilmemelidir :) Sadece emin olmak için: 9.3 'select (f())' in çoklu değerlendirmesini yapmaz. –
@ClodoaldoNeto Sabit eksik takma ad. Birden fazla değerlendirmeye gelince ... 9.3 *, * (f()). ''. Yanal sorgular yok. –
"LATERAL" ifadesi örtük olduğu için - her bir teknik özelliktir. '' LATERAL '' anahtar sözcüğü sadece gürültüsüzdür - bu da bir fonksiyonun gelebileceği herhangi bir parametre olmadığı için makul görünüyor. Sanırım satır içi dokümanlar olarak gösterilmeye değer, ancak insanlar o olmadan benzer bir sorgu gördüklerinde kafası karışıyor. –