Frage

Ich möchte eine Abfrage machen Katzen aufzulisten, die länger dauerte als der Durchschnitt Katzen zu verkaufen? Ich habe fünf Tabellen:

Tier, Verkauf, AnimalOrderItem, AnimalOrder und SaleAnimal

  

Tier Tabelle: AnimalID, Name, Kategorie   (Katze, Hund, Fisch)

     

SaleAnimal Tabelle: SaleID, AnimalID,   Saleprice

     

Verkauf Tabelle: SaleID, Datum, employeeID,   CustomerID

     

AnimalOrderItem Tabelle: OrderID,   AnimalID, Kosten

     

AnimalOrder: OrderID, Bestelldatum,   Empfangsdatum,        SupplierID, Versandkosten, EmployeeID

Es gibt andere Tabellen Ich glaube nicht, dass sie auf der Abfrage eine Wirkung haben.

Ich dachte an die folgende ... machen eine Abfrage Tage zu berechnen für alle ex zu verkaufen.

[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

Erstellen Sie eine weitere Abfrage auf der Basis der obigen Abfrage

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

Nach der Abfrage es läuft ich habe Fehler sagen

  

ORA-00921: unerwartetes Ende der SQL   Befehl

Irgendwelche Vorschläge! bitte

War es hilfreich?

Lösung

Abfragen können mit einer Unterabfrage kombiniert werden. Zum Beispiel:

select *
from (
    select * 
    from mytable
) subquery

Die Anwendung dieses Musters, um Ihr Problem scheint ziemlich einfach.

Andere Tipps

Ich sehe die geschlossene Klammer nicht, die mit Streichhölzern der select avg

Ok, ich habe mit dieser kommen:

    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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top