我正在使用 R 編程語言。假設我運行以下代碼:
library(RODBC)
library(sqldf)
con = odbcConnect("some name", uid = "some id", pwd = "abc")
sample_query = sqlQuery(con, "select distinct * from table_a a
inner join table_b b
on (a.date_1 between b.date_2 and b.date_3 and a.id1 = b.id1) or a.id2 = b.id2)
view(sample_query)
我的問題:有沒有辦法直接將“sample_query”放在“con”陳述句中指定的服務器上?目前,“sample_query”是在 R studio 的全域環境中創建的——但是有沒有辦法將“sample_query”放在服務器上(即“table_a”和“table_b”所在的同一個地方)?
謝謝!
uj5u.com熱心網友回復:
所以你可以在你的 RDBMS 中使用你的查詢創建一個存盤程序,就像這樣(pseducode,因為它在不同的資料庫引擎中可能有輕微的不同語法):
create proc procname
as
select distinct * from table_a a
inner join table_b b
on (a.date_1 between b.date_2 and b.date_3 and a.id1 = b.id1)
or a.id2 = b.id2)
end
然后 :
library(RODBC)
library(sqldf)
con = odbcConnect("some name", uid = "some id", pwd = "abc")
sample_query = sqlQuery(con, "exec procname")
view(sample_query)
在某些 rdbms 中,呼叫 proc 的命令就像 call procname
uj5u.com熱心網友回復:
SQL“VIEW”往往在 DMBS 之間相當兼容:
CREATE VIEW viewname
AS
select distinct *
from table_a a
inner join table_b b
on (a.date_1 between b.date_2 and b.date_3 and a.id1 = b.id1) or a.id2 = b.id2)
(通常,明確回傳的列被認為是一種很好的做法,即不使用*,盡管這可以被視為對許多人的偏好。)
有了這個,viewname就好像它是一張表,有或沒有WHERE子句。
SELECT * from viewname
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/383190.html
上一篇:我是否需要顯式回滾事務?
