2016-06-02 4 views
1

Auswahl ich die neueste Ordnung und den Namen des Kunden abgerufen werden soll, die es bestellt:SQL, um das neueste Bestelldatum

Select fname, lname, orderdate as newestorder 
from customer, cusorder 
where customer.cid = cusorder.cid 
group by fname, lname 
having orderdate = max(orderdate) 
; 

der Fehler ORA-00979: keine GROUP BY-Ausdruck

+0

auswählen top 1 fname, lname ....... aus table1, table2, wo customer.cid ..... order by orderdate desc funktioniert? – mrunion

+0

@mrunion Top existiert nicht in Oracle. "ORA-00979" ist ein Oracle-Fehler –

+0

in Oracle ist WHERE ROWNUM <= 1; – Turo

Antwort

0

Try zu verwenden, verbinden Sie den Punkt. Es gilt als gute Praxis. Versuchen Sie folgendes:

Select 

fname, lname , max(orderdate) as newestorder 
from customer AS c 
INNER JOIN cusorder as cu on c.cid = cu.cid 
group by fname, lname 
order by newestorder desc 
; 
3

Sie den Fehler bekommen, weil Sie orderdate in der Auswahl aufgenommen haben, aber du bist die Gruppierung nicht durch.

Das sagte, es wird nicht tun, was Sie wollen. Es gibt viele Möglichkeiten zu tun, was Sie wollen. Hier ist eine

Select fname, lname, orderdate as newestorder 
from customer 
    inner join cusorder 
    on customer.cid = cusorder.cid 

where 
orderdate = (select max(orderdate) from cusorder) 
0

sollte in der Lage sein, nur ein Maximum Datum direkt an der Select-Abfrage unter der Annahme, dass die Namen gleich sind.

Select fname, lname, max(orderdate) as newestorder 
from customer, cusorder 
where customer.cid = cusorder.cid 
group by fname, lname 
Verwandte Themen