Lists: | pgsql-es-ayuda |
---|
From: | Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx> |
---|---|
To: | FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Ayuda con query |
Date: | 2017-10-10 16:10:56 |
Message-ID: | CY4PR1801MB1927E93D38237A7BCE172771F6750@CY4PR1801MB1927.namprd18.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Buen dia, De ante mano muchas gracias a todos por su apoyo.
De las opciones que me comentarón la que me resulto es la siguiente ya la complete con los campos que necesito.
Select usuario.*
from (Select a.usuario , a.pwd , a.matricula, a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
From educaciondistancia.usuarios a
Union all
Select b.usuario, b.pwd, b.personal, b.iniciosesion, b.fechaultimoacceso, b.token, b.tipousuario, b.activo
From educaciondistancia.usuariosadmin b
) usuario
Where usuario.usuario = 'aramirez'
- Ahora tengo la siguiente duda:
A esta consulta tengo que agregar un valor, ambas tablas tienen el campo "tipousuario" y mi valor es 1 para mi tabla de usuarios y 2 para mi tabla de usuariosadmin; Yo quiero hacer esta consulta de forma que pueda ingresarle los siguientes valores a buscar : usuario y tipousuario
Puedo hacer una vista o tendria que meterlo a una funcion?
y si tienen un ejemplo se los agradeceria mucho.
Gracias.
From: | Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx> |
---|---|
To: | FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Ayuda con query |
Date: | 2017-10-10 17:23:11 |
Message-ID: | CY4PR1801MB1927A8A2E465C292DE44674EF6750@CY4PR1801MB1927.namprd18.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Hola,
Ya tengo mi funcion de la siguiente manera:
CREATE or replace FUNCTION educaciondistancia.busca_usuarios(character) RETURNS RECORD AS
$BODY$
DECLARE
REG RECORD;
BEGIN
FOR REG IN (Select usuario.*
from (Select a.usuario , a.pwd , a.matricula, a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
From educaciondistancia.usuarios a
Union all
Select b.usuario, b.pwd, b.personal, b.iniciosesion, b.fechaultimoacceso, b.token, b.tipousuario, b.activo
From educaciondistancia.usuariosadmin b
) usuario
Where usuario.usuario =$1)
loop
return REG;
end loop;
end;
$BODY$
language 'plpgsql';
solo que me muestra mi resultado en un solo renglón , como puedo hacer para que me lo muestre separado por campos
________________________________
De: Maria Antonieta Ramirez
Enviado: martes, 10 de octubre de 2017 11:10:56
Para: FORO POSTGRES
Asunto: Ayuda con query
Buen dia, De ante mano muchas gracias a todos por su apoyo.
De las opciones que me comentarón la que me resulto es la siguiente ya la complete con los campos que necesito.
Select usuario.*
from (Select a.usuario , a.pwd , a.matricula, a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
From educaciondistancia.usuarios a
Union all
Select b.usuario, b.pwd, b.personal, b.iniciosesion, b.fechaultimoacceso, b.token, b.tipousuario, b.activo
From educaciondistancia.usuariosadmin b
) usuario
Where usuario.usuario = 'aramirez'
- Ahora tengo la siguiente duda:
A esta consulta tengo que agregar un valor, ambas tablas tienen el campo "tipousuario" y mi valor es 1 para mi tabla de usuarios y 2 para mi tabla de usuariosadmin; Yo quiero hacer esta consulta de forma que pueda ingresarle los siguientes valores a buscar : usuario y tipousuario
Puedo hacer una vista o tendria que meterlo a una funcion?
y si tienen un ejemplo se los agradeceria mucho.
Gracias.
From: | Anthony Sotolongo <asotolongo(at)gmail(dot)com> |
---|---|
To: | Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>, FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Ayuda con query |
Date: | 2017-10-10 17:41:47 |
Message-ID: | 0cd24a18-1204-8c9f-5a05-0ec379400058@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Hola Maria Antonieta, como retornas un record desde hacer el cast de lo
que retornas, algo como:
select * from educaciondistancia.busca_usuarios('blablabla') as (campo1
tipo_dato, campo2 tipo_dato, ....)
donde los campos deben ser de mismo tipo de dato que lo que devuelve la
query que defines dentro de la función
por ejemplo:
CREATE or replace FUNCTION ejemplo_record(character) RETURNS RECORD AS
$BODY$
DECLARE
REG RECORD;
BEGIN
FOR REG IN (select datname, datdba from pg_database
Where datname =$1)
loop
return REG;
end loop;
end;
$BODY$
language 'plpgsql';
select * from ejemplo_record('postgres') as (nombre name, dba oid)
--retorna los campos por separado
select ejemplo_record('postgres') --retorna los campos en un record
Saludos
On 10/10/17 14:23, Maria Antonieta Ramirez wrote:
>
>
> Hola,
>
>
> Ya tengo mi funcion de la siguiente manera:
>
>
> CREATE or replace FUNCTION
> educaciondistancia.busca_usuarios(character) RETURNS RECORD AS
> $BODY$
> DECLARE
> REG RECORD;
> BEGIN
> FOR REG IN (Select usuario.*
> from (Select a.usuario , a.pwd , a.matricula,
> a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
> From educaciondistancia.usuarios a
> Union all
> Select b.usuario, b.pwd, b.personal, b.iniciosesion,
> b.fechaultimoacceso, b.token, b.tipousuario, b.activo
> From educaciondistancia.usuariosadmin b
> ) usuario
> Where usuario.usuario =$1)
> loop
> return REG;
> end loop;
> end;
> $BODY$
> language 'plpgsql';
>
>
>
> solo que me muestra mi resultado en un solo renglón , como puedo hacer
> para que me lo muestre separado por campos
>
> ------------------------------------------------------------------------
> *De:* Maria Antonieta Ramirez
> *Enviado:* martes, 10 de octubre de 2017 11:10:56
> *Para:* FORO POSTGRES
> *Asunto:* Ayuda con query
>
> Buen dia, De ante mano muchas gracias a todos por su apoyo.
>
> De las opciones que me comentarón la que me resulto es la siguiente ya
> la complete con los campos que necesito.
>
>
> Select usuario.*
> from (Select a.usuario , a.pwd , a.matricula,
> a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
> From educaciondistancia.usuarios a
> Union all
> Select b.usuario, b.pwd, b.personal, b.iniciosesion,
> b.fechaultimoacceso, b.token, b.tipousuario, b.activo
> From educaciondistancia.usuariosadmin b
> ) usuario
> Where usuario.usuario = 'aramirez'
>
>
>
> - Ahora tengo la siguiente duda:
> A esta consulta tengo que agregar un valor, ambas tablas tienen el
> campo "tipousuario" y mi valor es 1 para mi tabla de usuarios y 2
> para mi tabla de usuariosadmin; Yo quiero hacer esta consulta de forma
> que pueda ingresarle los siguientes valores a buscar : usuario y
> tipousuario
>
> Puedo hacer una vista o tendria que meterlo a una funcion?
> y si tienen un ejemplo se los agradeceria mucho.
>
> Gracias.
>
From: | Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx> |
---|---|
To: | FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Ayuda con query |
Date: | 2017-10-10 18:07:04 |
Message-ID: | CY4PR1801MB1927F66A84E6ADD958F12E72F6750@CY4PR1801MB1927.namprd18.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Muchas gracias , exelente.
Otra pregunta mas, resulta que si ejecuto mi query aparte, me da dos registros con un usuario "asotero" y al ejecutar mi funcion solo me da un registro , es decir solo lo encontro en la primera tabla que es usuarios y no me muestra el de la tabla usuariosadmin, mi pregunta es, si en el codigo de mi consulta tengo que indicarle algo mas?
________________________________
De: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
Enviado: martes, 10 de octubre de 2017 12:41:47
Para: Maria Antonieta Ramirez; FORO POSTGRES
Asunto: Re: Ayuda con query
Hola Maria Antonieta, como retornas un record desde hacer el cast de lo que retornas, algo como:
select * from educaciondistancia.busca_usuarios('blablabla') as (campo1 tipo_dato, campo2 tipo_dato, ....)
donde los campos deben ser de mismo tipo de dato que lo que devuelve la query que defines dentro de la función
por ejemplo:
CREATE or replace FUNCTION ejemplo_record(character) RETURNS RECORD AS
$BODY$
DECLARE
REG RECORD;
BEGIN
FOR REG IN (select datname, datdba from pg_database
Where datname =$1)
loop
return REG;
end loop;
end;
$BODY$
language 'plpgsql';
select * from ejemplo_record('postgres') as (nombre name, dba oid) --retorna los campos por separado
select ejemplo_record('postgres') --retorna los campos en un record
Saludos
On 10/10/17 14:23, Maria Antonieta Ramirez wrote:
Hola,
Ya tengo mi funcion de la siguiente manera:
CREATE or replace FUNCTION educaciondistancia.busca_usuarios(character) RETURNS RECORD AS
$BODY$
DECLARE
REG RECORD;
BEGIN
FOR REG IN (Select usuario.*
from (Select a.usuario , a.pwd , a.matricula, a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
From educaciondistancia.usuarios a
Union all
Select b.usuario, b.pwd, b.personal, b.iniciosesion, b.fechaultimoacceso, b.token, b.tipousuario, b.activo
From educaciondistancia.usuariosadmin b
) usuario
Where usuario.usuario =$1)
loop
return REG;
end loop;
end;
$BODY$
language 'plpgsql';
solo que me muestra mi resultado en un solo renglón , como puedo hacer para que me lo muestre separado por campos
________________________________
De: Maria Antonieta Ramirez
Enviado: martes, 10 de octubre de 2017 11:10:56
Para: FORO POSTGRES
Asunto: Ayuda con query
Buen dia, De ante mano muchas gracias a todos por su apoyo.
De las opciones que me comentarón la que me resulto es la siguiente ya la complete con los campos que necesito.
Select usuario.*
from (Select a.usuario , a.pwd , a.matricula, a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
From educaciondistancia.usuarios a
Union all
Select b.usuario, b.pwd, b.personal, b.iniciosesion, b.fechaultimoacceso, b.token, b.tipousuario, b.activo
From educaciondistancia.usuariosadmin b
) usuario
Where usuario.usuario = 'aramirez'
- Ahora tengo la siguiente duda:
A esta consulta tengo que agregar un valor, ambas tablas tienen el campo "tipousuario" y mi valor es 1 para mi tabla de usuarios y 2 para mi tabla de usuariosadmin; Yo quiero hacer esta consulta de forma que pueda ingresarle los siguientes valores a buscar : usuario y tipousuario
Puedo hacer una vista o tendria que meterlo a una funcion?
y si tienen un ejemplo se los agradeceria mucho.
Gracias.
From: | Anthony Sotolongo <asotolongo(at)gmail(dot)com> |
---|---|
To: | Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>, FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Ayuda con query |
Date: | 2017-10-10 21:03:56 |
Message-ID: | 51ae8eee-0c64-a7b2-f15e-0faecc572413@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Hola nuevamente, devuelve un solo registro pues esta diseñada para
devolver un solo registro :-/, si quieres mas de un registro, debes
decirle a la función que lo haga y que retorne un setof o un table y
dentro de ella hacer un return next dentro del ciclo, para seguir con el
estilo que pusiste inicialmente, algo como esto que esta a continuación:
CREATE OR REPLACE FUNCTION ejemplo_record2(character)
RETURNS SETOF record AS
$BODY$
DECLARE
REG RECORD;
BEGIN
FOR REG IN (select datname, datdba from pg_database
Where datname like $1)
loop
return next REG;
end loop;
return;
end;
$BODY$
LANGUAGE plpgsql;
select * from ejemplo_record2('%template%') as (nombre name, dba oid)
Saludos
PD: hay otras formas de hacerlo que no es un ciclo
On 10/10/17 15:07, Maria Antonieta Ramirez wrote:
>
>
> Muchas gracias , exelente.
>
>
> Otra pregunta mas, resulta que si ejecuto mi query aparte, me da dos
> registros con un usuario "asotero" y al ejecutar mi funcion solo me da
> un registro , es decir solo lo encontro en la primera tabla que es
> usuarios y no me muestra el de la tabla usuariosadmin, mi pregunta es,
> si en el codigo de mi consulta tengo que indicarle algo mas?
>
>
>
> ------------------------------------------------------------------------
> *De:* Anthony Sotolongo <asotolongo(at)gmail(dot)com>
> *Enviado:* martes, 10 de octubre de 2017 12:41:47
> *Para:* Maria Antonieta Ramirez; FORO POSTGRES
> *Asunto:* Re: Ayuda con query
>
> Hola Maria Antonieta, como retornas un record desde hacer el cast de
> lo que retornas, algo como:
>
>
> select * from educaciondistancia.busca_usuarios('blablabla') as
> (campo1 tipo_dato, campo2 tipo_dato, ....)
>
>
> donde los campos deben ser de mismo tipo de dato que lo que devuelve
> la query que defines dentro de la función
>
>
> por ejemplo:
>
>
>
> CREATE or replace FUNCTION ejemplo_record(character) RETURNS RECORD AS
> $BODY$
> DECLARE
> REG RECORD;
> BEGIN
> FOR REG IN (select datname, datdba from pg_database
> Where datname =$1)
> loop
> return REG;
> end loop;
> end;
> $BODY$
> language 'plpgsql';
>
> select * from ejemplo_record('postgres') as (nombre name, dba oid)
> --retorna los campos por separado
> select ejemplo_record('postgres') --retorna los campos en un record
>
>
> Saludos
>
>
> On 10/10/17 14:23, Maria Antonieta Ramirez wrote:
>>
>>
>> Hola,
>>
>>
>> Ya tengo mi funcion de la siguiente manera:
>>
>>
>> CREATE or replace FUNCTION
>> educaciondistancia.busca_usuarios(character) RETURNS RECORD AS
>> $BODY$
>> DECLARE
>> REG RECORD;
>> BEGIN
>> FOR REG IN (Select usuario.*
>> from (Select a.usuario , a.pwd , a.matricula,
>> a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
>> From educaciondistancia.usuarios a
>> Union all
>> Select b.usuario, b.pwd, b.personal, b.iniciosesion,
>> b.fechaultimoacceso, b.token, b.tipousuario, b.activo
>> From educaciondistancia.usuariosadmin b
>> ) usuario
>> Where usuario.usuario =$1)
>> loop
>> return REG;
>> end loop;
>> end;
>> $BODY$
>> language 'plpgsql';
>>
>>
>>
>> solo que me muestra mi resultado en un solo renglón , como puedo
>> hacer para que me lo muestre separado por campos
>>
>> ------------------------------------------------------------------------
>> *De:* Maria Antonieta Ramirez
>> *Enviado:* martes, 10 de octubre de 2017 11:10:56
>> *Para:* FORO POSTGRES
>> *Asunto:* Ayuda con query
>>
>> Buen dia, De ante mano muchas gracias a todos por su apoyo.
>>
>> De las opciones que me comentarón la que me resulto es la siguiente
>> ya la complete con los campos que necesito.
>>
>>
>> Select usuario.*
>> from (Select a.usuario , a.pwd , a.matricula,
>> a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
>> From educaciondistancia.usuarios a
>> Union all
>> Select b.usuario, b.pwd, b.personal, b.iniciosesion,
>> b.fechaultimoacceso, b.token, b.tipousuario, b.activo
>> From educaciondistancia.usuariosadmin b
>> ) usuario
>> Where usuario.usuario = 'aramirez'
>>
>>
>>
>> - Ahora tengo la siguiente duda:
>> A esta consulta tengo que agregar un valor, ambas tablas tienen el
>> campo "tipousuario" y mi valor es 1 para mi tabla de usuarios y 2
>> para mi tabla de usuariosadmin; Yo quiero hacer esta consulta de
>> forma que pueda ingresarle los siguientes valores a buscar : usuario
>> y tipousuario
>>
>> Puedo hacer una vista o tendria que meterlo a una funcion?
>> y si tienen un ejemplo se los agradeceria mucho.
>>
>> Gracias.
>>
>
From: | Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx> |
---|---|
To: | Anthony Sotolongo <asotolongo(at)gmail(dot)com>, FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Ayuda con query |
Date: | 2017-10-10 21:49:37 |
Message-ID: | CY4PR1801MB1927630581055A8AFA9FD240F6750@CY4PR1801MB1927.namprd18.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Muchas gracias !!
Ya quedo resuelto mi problema!!
________________________________
De: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
Enviado: martes, 10 de octubre de 2017 16:03:56
Para: Maria Antonieta Ramirez; FORO POSTGRES
Asunto: Re: Ayuda con query
Hola nuevamente, devuelve un solo registro pues esta diseñada para devolver un solo registro :-/, si quieres mas de un registro, debes decirle a la función que lo haga y que retorne un setof o un table y dentro de ella hacer un return next dentro del ciclo, para seguir con el estilo que pusiste inicialmente, algo como esto que esta a continuación:
CREATE OR REPLACE FUNCTION ejemplo_record2(character)
RETURNS SETOF record AS
$BODY$
DECLARE
REG RECORD;
BEGIN
FOR REG IN (select datname, datdba from pg_database
Where datname like $1)
loop
return next REG;
end loop;
return;
end;
$BODY$
LANGUAGE plpgsql;
select * from ejemplo_record2('%template%') as (nombre name, dba oid)
Saludos
PD: hay otras formas de hacerlo que no es un ciclo
On 10/10/17 15:07, Maria Antonieta Ramirez wrote:
Muchas gracias , exelente.
Otra pregunta mas, resulta que si ejecuto mi query aparte, me da dos registros con un usuario "asotero" y al ejecutar mi funcion solo me da un registro , es decir solo lo encontro en la primera tabla que es usuarios y no me muestra el de la tabla usuariosadmin, mi pregunta es, si en el codigo de mi consulta tengo que indicarle algo mas?
________________________________
De: Anthony Sotolongo <asotolongo(at)gmail(dot)com><mailto:asotolongo(at)gmail(dot)com>
Enviado: martes, 10 de octubre de 2017 12:41:47
Para: Maria Antonieta Ramirez; FORO POSTGRES
Asunto: Re: Ayuda con query
Hola Maria Antonieta, como retornas un record desde hacer el cast de lo que retornas, algo como:
select * from educaciondistancia.busca_usuarios('blablabla') as (campo1 tipo_dato, campo2 tipo_dato, ....)
donde los campos deben ser de mismo tipo de dato que lo que devuelve la query que defines dentro de la función
por ejemplo:
CREATE or replace FUNCTION ejemplo_record(character) RETURNS RECORD AS
$BODY$
DECLARE
REG RECORD;
BEGIN
FOR REG IN (select datname, datdba from pg_database
Where datname =$1)
loop
return REG;
end loop;
end;
$BODY$
language 'plpgsql';
select * from ejemplo_record('postgres') as (nombre name, dba oid) --retorna los campos por separado
select ejemplo_record('postgres') --retorna los campos en un record
Saludos
On 10/10/17 14:23, Maria Antonieta Ramirez wrote:
Hola,
Ya tengo mi funcion de la siguiente manera:
CREATE or replace FUNCTION educaciondistancia.busca_usuarios(character) RETURNS RECORD AS
$BODY$
DECLARE
REG RECORD;
BEGIN
FOR REG IN (Select usuario.*
from (Select a.usuario , a.pwd , a.matricula, a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
From educaciondistancia.usuarios a
Union all
Select b.usuario, b.pwd, b.personal, b.iniciosesion, b.fechaultimoacceso, b.token, b.tipousuario, b.activo
From educaciondistancia.usuariosadmin b
) usuario
Where usuario.usuario =$1)
loop
return REG;
end loop;
end;
$BODY$
language 'plpgsql';
solo que me muestra mi resultado en un solo renglón , como puedo hacer para que me lo muestre separado por campos
________________________________
De: Maria Antonieta Ramirez
Enviado: martes, 10 de octubre de 2017 11:10:56
Para: FORO POSTGRES
Asunto: Ayuda con query
Buen dia, De ante mano muchas gracias a todos por su apoyo.
De las opciones que me comentarón la que me resulto es la siguiente ya la complete con los campos que necesito.
Select usuario.*
from (Select a.usuario , a.pwd , a.matricula, a.iniciosesion,a.ultimoacceso, a.token, a.tipousuario , a.activo
From educaciondistancia.usuarios a
Union all
Select b.usuario, b.pwd, b.personal, b.iniciosesion, b.fechaultimoacceso, b.token, b.tipousuario, b.activo
From educaciondistancia.usuariosadmin b
) usuario
Where usuario.usuario = 'aramirez'
- Ahora tengo la siguiente duda:
A esta consulta tengo que agregar un valor, ambas tablas tienen el campo "tipousuario" y mi valor es 1 para mi tabla de usuarios y 2 para mi tabla de usuariosadmin; Yo quiero hacer esta consulta de forma que pueda ingresarle los siguientes valores a buscar : usuario y tipousuario
Puedo hacer una vista o tendria que meterlo a una funcion?
y si tienen un ejemplo se los agradeceria mucho.
Gracias.