Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda en correccion de ejercicios sql (https://www.clubdelphi.com/foros/showthread.php?t=22525)

fede7 17-06-2005 21:12:07

Ayuda en correccion de ejercicios sql
 
Dada la siguiente base de Datos:
Clientes(num_cliente,nombre,apellidos,codigo_postal)
Facturas(num_factura,num_cliente,fecha,totalsiniva,iva,totalconiva)
LineaFactura(num_factura,linea_factura,num_articulo,precio_unitario,cantidad,descuento,total_linea)(el descuento se extresa en tanto por 1)
Articulos(num_articulo,nombre,precio)

Tengo muchos fallos al hacer los ejercicios para examinarme de sql y me gustaria que alguien q supiera si tiene un ratejo para decirme si tan bien o mal y en q fallo se lo agradeceria.

Para empezar pondre uno.

1.-Lista los articulos (num_articulo,nombre,precio) no vendidos en el ultimo mes (ultimos 31 dias)
2.-Lo mismo pero listar clientes que no han comprado un articulo en el ultimo mes.

Solucion que doy:
1.-
Código:

SELECT num_articulo,nombre,precio
From Articulos
Where num_articulo NOT IN(Select num_factura
From LineaFactura Join Facturas
Where num_articulo IN(Current_Date-Interval = '31' Day)

2.-
Código:

SELECT num_cliente,nombre,apellidos,codigo_postal
From Clientes
Where num_Cliente NOT IN( Select num_factura
From Facturas
Where num_cliente IN(Current_Date-Interval = '31' Day)

Gracias

delphi.com.ar 17-06-2005 21:41:51

Se parece terriblemente a los primeros puntos de una evaluación que yo daba para entrevistas laborales :D...

Código SQL [-]
SELECT num_articulo, nombre, precio 
FROM Articulos a
WHERE NOT EXISTS (SELECT 1
       FROM LineaFactura LF, Facturas F
       WHERE LF.num_factura = F.num_factura
       AND LF.num_articulo = A.num_articulo
       AND FECHA ... {La comparación depende del motor})

El otro es similar pero con la tabla de artículos.

fede7 17-06-2005 22:22:21

Hola, gracias por tu respuesta pero lo que me pones me es totalmente desconocido. La solucion que busco debe ser mas simple.

El exists no lo uso en ningun ejercicio, el select siempre seleccionamos un campo no numeros y lo de F y LF y tal tp me suena.

Tiene q ser algo similar a lo q puse. Q igual el profesor tb lo explica mal pero si le pongo esto me suspende fijo pq no es lo q el explica, jeje.
No se si me explico.... El as por ejemplo solo lo he usado en vistas creo recordar, en consultas simples no explico nada para ponerlo.

Se q es un poco extraño pero es lo q me piden.

saludos

Ivanzinho 21-06-2005 13:46:44

Código SQL [-]
 
SELECT num_articulo,nombre,precio 
From Articulos
Where num_articulo NOT IN(
        SELECT num_articulo
        FROM LineaFactura LF, Facturas F
        WHERE LF.num_factura = F.num_factura
        AND FECHA ... {La comparación depende del motor})

Lo de LF y F son nombres por los que se sutituye le nombre de la tabla y se usan para saber a que tabla pertenece cada campo ya que hay campos con el mismo nombre en las dos tablas implicadas en el join.

Pero prueba a borrar todos lo LF y F y prueba a ver si te funciona igual.

La otra consulta sería semejante.

Un saludo


La franja horaria es GMT +2. Ahora son las 10:47:33.

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