Pregunta

Quiero hacer una consulta a la lista gatos que tuvieron más tiempo que los gatos promedio para vender? Tengo cinco tablas:

animal, venta, AnimalOrderItem, AnimalOrder y SaleAnimal

  

Mesa Animal: AnimalID, nombre, categoría   (Gato, perro, pescado)

     

SaleAnimal tabla: SaleID, AnimalID,   SalePrice

     

mesa de venta: SaleID, fecha, employeeID,   CustomerID

     

Mesa AnimalOrderItem: IdPedido,   AnimalID, el costo

     

AnimalOrder: IdPedido, FechaPedido,   Fecha de recepción,        IdProveedor, shippingcost, EmployeeID

Hay otras tablas que no piensan que tienen un efecto sobre la consulta.

pensé en lo siguiente ... hacer una consulta para calcular días para vender a todos los ex:.

[SaleDate]-[ReceiveDate] AS DaysToSell
Have the INNER JOIN built:
Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem
ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.
OrderID = AnimalOrderItem.OrderID) INNER JOIN SaleAnimal ON Animal.
AnimalID = SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID

Cree otra consulta basada en la consulta anterior

SELECT AnimalID, Name, Category, DaysToSell
WHERE Category="Cat" AND DaysToSell>
(SELECT Avg(DaysToSell)
FROM the earlier query
WHERE Category="Cat"
ORDER BY DaysToSell DESC;

Después de ejecutar la consulta que me dice error

  

ORA-00921: final inesperado de SQL   comando

Cualquier sugerencia! por favor

¿Fue útil?

Solución

Las consultas se pueden combinar con una subconsulta. Por ejemplo,

select *
from (
    select * 
    from mytable
) subquery

La aplicación de este modelo a su problema parece bastante sencillo.

Otros consejos

No veo el soporte cerrado que coincide con el promedio de selección

Ok, he venido con esto:

    SELECT AnimalID, Name, Category,
           [SaleDate]-[ReceiveDate] AS DaysToSell
    FROM   Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.OrderID = AnimalOrderItem.OrderID)
           INNER JOIN SaleAnimal ON Animal.AnimalID = SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID
    WHERE  Category = "Cat"
    AND    ([SaleDate]-[ReceiveDate]) > (SELECT AVG([SaleDate]-[ReceiveDate])
                                         FROM   Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.OrderID = AnimalOrderItem.OrderID)
                                         INNER JOIN SaleAnimal ON Animal.AnimalID =SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID
                                         WHERE Category = "Cat")
    ORDER BY ([SaleDate]-[ReceiveDate]) DESC;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top