Question

Je veux faire une requête à la liste des chats qui ont plus que les chats en moyenne pour vendre? J'ai cinq tables:

Animal, Vente, AnimalOrderItem, AnimalOrder et SaleAnimal

  

Tableau animale: AnimalID, Nom, Catégorie   (Chat, chien, poisson)

     

SaleAnimal tableau: SaleID, AnimalID,   SalePrice

     

Tableau de vente: SaleID, date, employeeID,   CustomerID

     

Tableau de AnimalOrderItem: OrderID,   AnimalID, coût

     

AnimalOrder: OrderID, OrderDate,   Date de réception,        SupplierID, shippingcost, EmployeeID

Il y a d'autres tables, je ne pense pas qu'ils ont un effet sur la requête.

Je pensais à ce qui suit ... faire une requête pour calculer jours à vendre pour tous les 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

Créer une autre requête basée sur la requête ci-dessus

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

Après l'exécution de la requête de ce que je suis erreur en disant

  

ORA-00921: fin inattendue de SQL   commande

Toutes les suggestions! s'il vous plaît

Était-ce utile?

La solution

Les requêtes peuvent être combinées avec une sous-requête. Par exemple,

select *
from (
    select * 
    from mytable
) subquery

En appliquant ce modèle à votre problème semble assez simple.

Autres conseils

Je ne vois pas le support fermé qui correspond à la select avg

Ok, je suis venu à ceci:

    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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top