Domanda

Voglio fare una query per elencare i gatti che hanno avuto più di gatti in media da vendere? Ho cinque tabelle:

degli animali, Vendita, AnimalOrderItem, AnimalOrder, e SaleAnimal

  

Tavolo animali: AnimalID, Nome, Categoria   (Gatto, cane, pesce)

     

SaleAnimal tavolo: SaleID, AnimalID,   SalePrice

     

Tavolo Vendita: SaleID, data, employeeID,   CustomerID

     

Tavolo AnimalOrderItem: OrderID,   AnimalID, costo

     

AnimalOrder: OrderID, DataOrdine,   Data di ricezione,        IDFornitore, ShippingCost, EmployeeID

C'è altri tavoli che non pensano di avere un effetto sulla query.

ho pensato a quanto segue ... fare una query per calcolare giorni a vendere per tutti gli 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

Creare un'altra query basata sulla query di cui sopra

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

Dopo aver eseguito l'interrogazione che ho ottenuto errore che dice

  

ORA-00921: end inaspettata di SQL   comando

Qualche suggerimento! si prega

È stato utile?

Soluzione

Le query possono essere combinati con una subquery. Ad esempio,

select *
from (
    select * 
    from mytable
) subquery

L'applicazione di questo modello per il tuo problema sembra abbastanza semplice.

Altri suggerimenti

Non vedo la staffa chiusa che corrisponde con il select avg

Ok, mi è venuta in mente questo:

    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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top