Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Novato en SQL. Dudas con consultas. (https://www.clubdelphi.com/foros/showthread.php?t=51877)

Recca 03-01-2008 01:21:53

Novato en SQL. Dudas con consultas.
 
Hola a todos. Soy nuevo en este foro y la verdad es que me alegro bastante de haber podido encontrar una página como esta. Mi problemas es que tengo que hacer un montón de consultas en SQL y tengo muy poco tiempo. Espero que alguien tenga la amabilidad de echarme una mano porque ya no se qué hacer.

Las tablas con las que trabajo son las siguientes:

EMPRESA(NIF,Ciudad,Nombre)
VENTA(NIF_Vendedora,NIF_Compradora,Fecha)
PRODUCTO(Cod_Producto,Precio)
ESTADO(Cod_Estado,Estado)
CAMBIO(Cod_Estado,Cod_Producto,Fecha)

La tabla ESTADO almacena todos los estado por los que ha pasado un producto. El 1 es "en almacen", el 2 "en venta" y el 3 "agotado".

Las consultas que se me piden son las siguientes:

- NIF de la empresa que más productos ha vendido en el último mes(pensaba que podía hacerlo con MAX(COUNT) pero se ve que no puedo usar una fución de agregación dentro de otra).
- Pareja de empresas que más operaciones(compra o venta) han realizado entre ellas.
- Qué productos han pasado por un estado en el que ya habían estado(aquí hay que hacer algo comparando fechas pero no se como se hace)
- Qué producto se ha agotado más rápido después de ponerse a la venta.

Hay alguna más pero sobre todo estas 4 se me atascan y no sé ni por dónde empezar. Estaré eternamente agradecido a quien me pueda echar una mano con esto. Feliz año a todo el mundo!!!

jachguate 03-01-2008 02:38:15

Hola.

En primer lugar, bienvenid@ al clubdelphi. Este sitio tiene mucha información que te ayudará a escribir consultas sql.

Te recomiendo leer la guia de estilo y respetar las normas del foro.

Sobre la primera consulta, podes basarte solamente en la consulta que haga el count, ordenarla de mayor a menor y devolver solamente el primer registro. Dependiendo del motor, la sintaxis podría ser algo como:

Código SQL [-]
  select first 1 nif, count(*)
     from .....

--o bien

  select top 1 nif, count(*)
    from ....

Hasta luego.

;)

Recca 03-01-2008 02:46:06

:eek::eek:waaaahh!!!

Muchas gracias jachguate. Te debo una, ahora mismo voy a probarlo.:)

Por cierto, para lo de las consultas utilizo el acces pero es sólo para probar si están bien, pero si pueden servir en otro motor tb e sirven. Eternamente agradecido:D:D:D

jachguate 03-01-2008 02:50:11

uf... el SQL de access es muy retorcido...

la verdad, no me gusta nada...

Recca 03-01-2008 03:23:00

ando un poco perdido, a lo mejor no he comprendido bien como funciona esa instruccion. Sería algo así?


SELECT FIRST 1 NIF
FROM (SELECT NIF_Vendedora,COUNT(*)
FROM VENTA GROUP BY NIF ORDER BY(COUNT(*)))


Seguramente no. Pido disculpas si parece una aberración. Aun estoy aprendiendo y ahora en Navidades no tengo al profesor para preguntarle las dudas:(

ContraVeneno 03-01-2008 15:48:54

Código SQL [-]
Declare @Mes integer
If Month(GetDate()) = 1 begin
  Select @Mes = 12
end else
  Select @Mes =  Month(GetDate()) - 1

Select Top 1 E.Nif, Count(V.Nif_Vendedora)
From Venta V 
join Empresa E on V.NIF_Vendedora = E.NIF
Where Month(V.Fecha) = @Mes
Group By E.Nif
Order by Count(V.Nif_Vendedora) desc

Eso funciona en SQL Server

Recca 03-01-2008 21:42:26

mil gracias contraveneno. Ahora voy a probarlo.


La franja horaria es GMT +2. Ahora son las 02:10:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi