xsql: SQL-expresión

View source: R/mp.r

xsqlR Documentation

SQL-expresión

Description

Construye expresión SQL

Usage

xsql(
  x = list(),
  whr = character(),
  ord = character(),
  qby = character(),
  joi = character()
)

Arguments

x

lista de lista de character

whr

character: cláusula where

ord

character: cláusula order by

joi

character: cláusula join

gby

character: cláusula group by

Details

Los nombres de las tablas y los campos respectivos involucradas en la expresión, se especifican en una lista compuesta de tantas listas como tablas intervienen en la expresión. La lista de cada tabla está compuesta de dos vectores tipo character: el primero es el nombre de la tabla; el segundo, el de los campos tomados en cuenta. Si el primero o el segundo tienen sus elementos nombrados, estos nombres se utilizarán como "alias" en el caso de la tabla, o para renombrar el campo en el resultado de la consulta (en la cláusula «as»). Si sólo hay una tabla involucrada, las listas pueden ser sustituidas por un vector.

Las cláusulas «where», «join» (inner, left, right), «order by»,
«order by», son opcionales y se especifican como argumentos de
los correspondientes parámetros. Estas se deben introducir con
la sintaxis correcta pues la función no valida eso.

Si la expresión contiene un «join», se requieren dos tablas, y
la cláusula «on» es completada por el argumento al parámetro
"whr". El tipo de «join» se puede indicar sólo con las primeras
letras; e.g in(nner)

Value

character

Examples

xsql(list(list("tab", c("cm1", "cm2"))))
##-> "select cm1, cm2 from tab"
xsql(list(list("tab", c(x = "cm1", y = "cm2"))))
##-> "select cm1 as x, cm2 as y from tab"
xsql(list(list(a = "tab", c("cm1", "cm2"))))
##-> "select a.cm1 as x, a.cm2 as y from tab a"
tt <- list(list(a = "ta", c(w = "a", x = "b")),
           list(b = "tb", c(y = "c", z = "d")))
xsql(tt, joi = "in", whr = "a.a=b.c")
##-> "select a.a as w,a.b as x, b.c as y, b.d as z ...
##    from ta a, tb b inner join on a.a=b.c"

ecastellon/magest documentation built on Dec. 9, 2024, 7:44 p.m.