Entrar
¿Nuevo usuario? Inscribirme
DesarrolloDelphi · Desarrollo de Software en Borland Delphi
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés añadir enlaces a sitios relacionados de tu grupo.

Mensajes

  Mensajes Ayuda
Avanzado
SQL   Lista de mensajes  
Responder | Reenviar Mensaje #4059 de 7332 |
Re: [Delphi] SQL

Envio la estructura de las tablas de ejemplo, los datos , y un par de SP
haciendo un simple
select * from new procedure estaria el resultado que necesitas


moraleja : no descarteis los stored procedures suelen ser de gran utilidad
moraleja dos : RTFM de SQL antes de necesitarlo, ya que hay algunas
posibilidades como el HAVING y el UNION que suelen ser de gran utilidad
;-) y es dificil llegar a ellas sin leer el manual .

Saludos cordiales

Augusto





SET TERM ^ ;




/******************************************************************************/
/*** Stored
Procedures ***/

/******************************************************************************/

CREATE PROCEDURE CATEGORIA_S (
VALOR INTEGER)
RETURNS (
NOMBRE VARCHAR(50))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE NEW_PROCEDURE
RETURNS (
APELLIDO VARCHAR(59),
MOVIMIENTOS BIGINT,
CATEGORIA VARCHAR(50))
AS
BEGIN
EXIT;
END^



SET TERM ; ^



/******************************************************************************/
/***
Tables ***/

/******************************************************************************/

CREATE TABLE CATEGORIA (
DESDE INTEGER,
HASTA INTEGER,
NOMBRE VARCHAR(50)
);


CREATE TABLE CLIENTES (
IDCLIENTE INTEGER,
APELLIDO VARCHAR(59)
);


CREATE TABLE VENTAS (
IDCLIENTE INTEGER,
CANTIDAD INTEGER
);



INSERT INTO CATEGORIA (DESDE, HASTA, NOMBRE) VALUES (0, 4,
'CASUAL');
INSERT INTO CATEGORIA (DESDE, HASTA, NOMBRE) VALUES (5, 9, 'CHICO');
INSERT INTO CATEGORIA (DESDE, HASTA, NOMBRE) VALUES (10, 24,
'NORMAL');
INSERT INTO CATEGORIA (DESDE, HASTA, NOMBRE) VALUES (25, 9999,
'IMPORTANTE');

COMMIT WORK;

INSERT INTO CLIENTES (IDCLIENTE, APELLIDO) VALUES (1, 'GONZALEZ');
INSERT INTO CLIENTES (IDCLIENTE, APELLIDO) VALUES (2, 'GUTIERREZ');
INSERT INTO CLIENTES (IDCLIENTE, APELLIDO) VALUES (3, 'FERNANDEZ');

COMMIT WORK;

INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (1, 1);
INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (2, 2);
INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (3, 3);
INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (1, 1);
INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (2, 2);
INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (3, 3);
INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (1, 1);
INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (2, 2);
INSERT INTO VENTAS (IDCLIENTE, CANTIDAD) VALUES (3, 4);

COMMIT WORK;




/******************************************************************************/
/*** Stored
Procedures ***/

/******************************************************************************/


SET TERM ^ ;

ALTER PROCEDURE CATEGORIA_S (
VALOR INTEGER)
RETURNS (
NOMBRE VARCHAR(50))
AS
BEGIN
FOR SELECT NOMBRE
FROM CATEGORIA
where :valor between desde and hasta
INTO :NOMBRE
DO
BEGIN
SUSPEND;
END
END
^

ALTER PROCEDURE NEW_PROCEDURE
RETURNS (
APELLIDO VARCHAR(59),
MOVIMIENTOS BIGINT,
CATEGORIA VARCHAR(50))
AS
BEGIN
FOR
SELECT
CLIENTES.APELLIDO,
sum(VENTAS.CANTIDAD) movimientos,
(select nombre from categoria_s(sum(VENTAS.CANTIDAD) ))
categoria
FROM
VENTAS
INNER JOIN CLIENTES ON (VENTAS.IDCLIENTE =
CLIENTES.IDCLIENTE)

group by CLIENTES.APELLIDO
INTO :APELLIDO,
:MOVIMIENTOS,
:CATEGORIA
DO
BEGIN
SUSPEND;
END
END
^


SET TERM ; ^



















Augusto Sosa Escalada wrote:

>y yo me confundí ! en lugar de count es sum,
>Dame un rato y lo pruebo, de todos modos si pudieras enviar a mi mail
>particular el esquema con datos :) yo te envío el SQL probado
>
>En este momento no me doy cuenta de como hacerlo según una tercer tabla
>de categoría en un único SQL
>
>Ahora si pudieras usar un par de stored procedures, "la vida seria mas
>fácil".
>
>Saludos cordiales
>
>Augusto
>
>
>Pablo Zagni wrote:
>
>
>
>>Augu... Buenisimo! pero los tramos los tengo definidos en otra tabla!
>>explico las tablas
>>
>>CLIENTES
>>IDCLIENTE APELLIDO
>>1 GONZALEZ
>>2 GUTIERREZ
>>3 FERNANDEZ
>>
>>CATEGORIAS
>>DESDE HASTA NOMBRE
>>0 4 CASUAL
>>5 9 CHICO
>>10 24 NORMAL
>>25 9999 IMPORTANTE
>>
>>VENTAS
>>IDCLIENTE CANTIDAD
>>1 1
>>2 2
>>3 3
>>1 1
>>2 2
>>3 3
>>1 1
>>2 2
>>3 4
>>
>>Entonces el cliente 1 compró 3 unidades, el 2 6 unidades y el 3 10 unidades
>>
>>quiero un listado
>>GONZALEZ CASUAL
>>GUTIERREZ CHICO
>>FERNANDEZ NORMAL
>>
>>Saludos
>>Lic. Pablo Zagni
>>www.FuelSoftware.com.ar
>>Buenos Aires, Argentina
>>
>>Augusto Sosa Escalada wrote:
>>
>>
>>
>>
>>>Termino de probar esto y aunque a alguno le parezca un poco demencial,
>>>funcionó bien, habria que ver si entendi bien la pregunta :-p
>>>
>>>
>>>saludos
>>>
>>>
>>> select NRO_CLIENTE,count(canunidades) ventas , 'Poco ' categoria
>>> from VTA_DET_MOV
>>> group by NRO_CLIENTE
>>> having count(canunidades) between 1 and 10
>>> union
>>> select NRO_CLIENTE,count(canunidades) ventas , 'Medio ' categoria
>>> from VTA_DET_MOV
>>> group by NRO_CLIENTE
>>> having count(canunidades) between 11 and 20
>>> union
>>> select NRO_CLIENTE,count(canunidades) ventas , 'Mucho ' categoria
>>> from VTA_DET_MOV
>>> group by NRO_CLIENTE
>>> having count(canunidades) between 21 and 30
>>>
>>>
>>>
>>>
>>>Pablo Zagni wrote:
>>>
>>>
>>>
>>>>Utilizo Firebird.
>>>>Tengo una tabla de clientes, uan de categoria de clientes, y una tabla
>>>>de ventas.
>>>>las categorias son de acuerdo a las ventas, la cantidad de productos
>>>>comprados
>>>>1-4 : casual
>>>>5-10: chico
>>>>10-25: normal
>>>>25-999: importante
>>>>
>>>>cómo hago la consulta para que me diga la categoria en que esta cada
>>>>cliente?
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>--
>>>No virus found in this outgoing message.
>>>Checked by AVG Anti-Virus.
>>>Version: 7.0.300 / Virus Database: 265.8.4 - Release Date: 01/02/2005
>>>
>>>
>>>
>>>------------------------------
>>>DesarrolloDelphi:
>>>Desarrollo de Software en Borland Delphi
>>>------------------------------
>>>Direcciones de la lista:
>>>Publicar un mensaje: DesarrolloDelphi@...
>>>Suscribirse........: DesarrolloDelphi-Subscribe@...
>>>Desuscribirse......: DesarrolloDelphi-Unsubscribe@...
>>>Administrador......: DesarrolloDelphi-Owner@...
>>>Página de la lista.: http://www.gruposyahoo.com.ar/group/DesarrolloDelphi
>>>------------------------------
>>>
>>>
>>>------------------------------------------------------------------------
>>>*Enlaces de Yahoo! Grupos*
>>>
>>> * Para visitar el sitio web del grupo, andá a:
>>> http://ar.groups.yahoo.com/group/DesarrolloDelphi/
>>>
>>> * Para cancelar tu suscripción a este grupo, enviá un mensaje a:
>>> DesarrolloDelphi-unsubscribe@...
>>>
<mailto:DesarrolloDelphi-unsubscribe@...?subject=Unsubscribe>
>>>
>>> * El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio
>>> de Yahoo! <http://ar.docs.yahoo.com/info/utos.html>.
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>------------------------------
>>DesarrolloDelphi:
>>Desarrollo de Software en Borland Delphi
>>------------------------------
>>Direcciones de la lista:
>>Publicar un mensaje: DesarrolloDelphi@...
>>Suscribirse........: DesarrolloDelphi-Subscribe@...
>>Desuscribirse......: DesarrolloDelphi-Unsubscribe@...
>>Administrador......: DesarrolloDelphi-Owner@...
>>Página de la lista.: http://www.gruposyahoo.com.ar/group/DesarrolloDelphi
>>------------------------------
>>Enlaces de Yahoo! Grupos
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>

--

Augusto Sosa Escalada
SIAF - Gerente de Tecnología
www.siafonline.com.ar
Gabriel Ardoino 514
(B1704EIL)Ramos Mejia
Buenos Aires - Argentina
Tel. 4943 9100 int 343



--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 265.8.4 - Release Date: 01/02/2005




Mié, 2 de Feb, 2005 2:05 pm

augustose
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #4059 de 7332 |
Desplegar mensajes Autor Ordenar por fecha

1. English 2. Portuguese 1. does the 'GROUP BY' command order the registers groups alphabetically too ? or it just groups ? can some one help me ? 2. o comando...
Alexandre
alexandrebenevides@...
Enviar correo
26 de Abr, 2002
4:56 pm

... No, the GROUP BY just group fields. Use ORDER BY to sort them. Norberto Manzanos nmanzanos@... http://www.amanza.com.ar...
Norberto Manzanos
norberto2459
Sin conexión Enviar correo
26 de Abr, 2002
10:58 pm

Perro... Hasta ac vamos bien SELECT SOC.APELLIDO, SUM(ALQ.CANTIDAD) FROM SOCIOS SOC, ALQUILERES ALQ WHERE SOC.IDSOCIO=ALQ.IDSOCIO GROUP BY SOC.APELLIDO Traigo...
Pablo Zagni
fuelsoft
Sin conexión Enviar correo
2 de Feb, 2005
3:20 pm

No, tenes que agregar el hasta tambien Proba con la consulta tal cual te la pasé. Con estas tablas seria así: SELECT soc.apellido, cat.nombre, cat.desde,...
José María Rome...
joe_cranne
Sin conexión Enviar correo
2 de Feb, 2005
4:27 pm

No omitamos tener presente el tema del rendimiento ( performance ) , con los SP es mas eficiente. Me pareció excelente la resolución en un único SQL, es...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
2 de Feb, 2005
3:53 pm

Si.. perfecto.. cuando tenga una base mounstrosa voy a hacer las consultas con SP, mientras sean menos de 1000 clientes... todo bien... Saludos Lic. Pablo...
Pablo Zagni
fuelsoft
Sin conexión Enviar correo
2 de Feb, 2005
4:07 pm

El tema del entrenamiento es así. tenes que entrenar por 100x para estar listo para hacer 10x. Uno tiene que ir practicando con SP , cuando tiene problemas...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
2 de Feb, 2005
4:39 pm

No, tenes que agregar el hasta tambien Proba con la consulta tal cual te la pasé. Con estas tablas seria así: SELECT soc.apellido, cat.nombre, cat.desde,...
José María Rome...
joe_cranne
Sin conexión Enviar correo
2 de Feb, 2005
4:18 pm

segun entiendo las "vistas en linea" FB no las soporta, se que oracle las usa y son una gran cosa. saludos Augusto ... -- Augusto Sosa Escalada SIAF - Gerente...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
2 de Feb, 2005
4:44 pm

No anda =( Saludos Lic. Pablo Zagni www.FuelSoftware.com.ar Buenos Aires, Argentina Jos Mara Romero Cuny wrote: No, tenes que agregar el hasta tambien Proba...
Pablo Zagni
fuelsoft
Sin conexión Enviar correo
2 de Feb, 2005
4:54 pm

Luego de normalizar la tabla, me di cuenta que cada alquiler tiene que tener un detalle, asi que hay otra tabla ms. Aqu est el SQL, no trae todos los clientes,...
Pablo Zagni
fuelsoft
Sin conexión Enviar correo
3 de Feb, 2005
10:46 pm

no he visto completo el ejemplo que estan trabajando, pero pongo mis dos centavos... Firebird agrega CROSS JOIN en su version 2 (este fin de semana se espera...
Ernesto Cullen
ernestocullen
Sin conexión Enviar correo
3 de Feb, 2005
11:55 pm

Ernesto, creo que el CROSS JOIN no es lo mismo que el NATURAL JOIN. el natural join es el producto cartesiano de los regitros de las tablas que participan....
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
4 de Feb, 2005
4:11 pm

ok... habia visto el cross en las consultas multidimensionales de sqlserver, pero pense que hablaban del cross join de Firebird. En las notas de version de la...
Ernesto Cullen
ernestocullen
Sin conexión Enviar correo
4 de Feb, 2005
9:10 pm

Ernesto, con el copy&paste que envias , tenes suficiente aval para acreditar lo que decís. Yo tenia entendido algo distintos de los Cross Joins. De donde...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
7 de Feb, 2005
1:30 pm

Arme un ejemplo de cross join en access, si alguien lo quiere me avisan y lo mando Todavia no pude encontrar nada sobre este asunto y firebird, si alguien ...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
8 de Feb, 2005
4:06 pm

Hola Augusto, estuve de viaje por eso no te conteste antes. Lo que pegué el otro dia era de las notas de version (muuuuuy preliminares) de la version 2 de...
Ernesto Cullen
ernestocullen
Sin conexión Enviar correo
9 de Feb, 2005
12:47 pm

Utilizo Firebird. Tengo una tabla de clientes, uan de categoria de clientes, y una tabla de ventas. las categorias son de acuerdo a las ventas, la cantidad de...
Pablo Zagni
fuelsoft
Sin conexión Enviar correo
1 de Feb, 2005
10:57 pm

Termino de probar esto y aunque a alguno le parezca un poco demencial, funcionó bien, habria que ver si entendi bien la pregunta :-p saludos select...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
2 de Feb, 2005
12:49 pm

Augu... Buenisimo! pero los tramos los tengo definidos en otra tabla! explico las tablas CLIENTES IDCLIENTE APELLIDO 1 GONZALEZ 2 GUTIERREZ 3...
Pablo Zagni
fuelsoft
Sin conexión Enviar correo
2 de Feb, 2005
1:24 pm

y yo me confundí ! en lugar de count es sum, Dame un rato y lo pruebo, de todos modos si pudieras enviar a mi mail particular el esquema con datos :) yo te...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
2 de Feb, 2005
1:40 pm

Envio la estructura de las tablas de ejemplo, los datos , y un par de SP haciendo un simple select * from new procedure estaria el resultado que necesitas ...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
2 de Feb, 2005
2:05 pm

Se puede ralizar la consulta sin un St Proc el drama está en que sí o sí se deben mostrar los campos desde y hasta de la tabla categorías. La consulta es...
José María Rome...
joe_cranne
Sin conexión Enviar correo
2 de Feb, 2005
2:14 pm

Augu.... Te entiendo... pero quiero hacer una consulta sin SP... lo ms simple posible ;-) Igualmente el cdigo lo entiendo, pero tiene que haber una forma de...
Pablo Zagni
fuelsoft
Sin conexión Enviar correo
2 de Feb, 2005
3:24 pm

Si, pero no puedo ayudar mucho , porque en general trato de usar SP, no soy habilidoso para hacer todo en un query y optimizarlo, etc. en general me quedan...
Augusto Sosa Escalada
augustose
Sin conexión Enviar correo
2 de Feb, 2005
3:43 pm

Si macho.. pero trabajas el doble!! Cuando laburaba en clipper.. tenia que hacer todo a mano.. ahora que estoy con SQL, que lo haga el motor! ya quiero laburar...
Pablo Zagni
fuelsoft
Sin conexión Enviar correo
2 de Feb, 2005
3:52 pm
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda