postgres - Gruppe von über mehrere Spalten - von master/detail-Typ-Tabelle
Ich habe eine Tabelle Auftrag(orderid, ordernumber, clientid, orderdesc usw.) und einen entsprechenden status für die Bestellung auf eine Tabelle order_status ( statusid, orderid, statusdesc, statusNote, statustimestamp)
sagen, ich habe einen Rekord in der Reihenfolge wie unten
orderid orderumber clientid orderdesc
1111 00980065 ABC blah..blah..
und einen entsprechenden status Einträge
statusid orderid statusdesc statusNote statustimestamp
11 1111 recvd status blah yyyy-mm-dd:10:00
12 1111 clientproce status blah yyyy-mm-dd:11:00
13 1111 clientnotice status blah yyyy-mm-dd:15:00
14 1111 notified status blah yyyy-mm-dd:17:00
Wie bekomme ich das folgende Ergebnis (aktuellen Zeitstempel zusammen mit mehreren Spalten)
1111 14 00980065 ABC blah..blah.. notified status blah yyyy-mm-dd:17:00
Du musst angemeldet sein, um einen Kommentar abzugeben.
Postgresql gibt Ihnen eine viel einfachere alternative zu den mehrere subselects mit der (nicht standard-SQL) UNTERSCHIEDLICHE AUF:
Dies setzt Voraus, dass jeder
order
hat mindestens einestatus
. Anderswo, und wenn Sie wollen, um zu zeigen, Aufträge auch ohne status, würde Sie einen outer-join.Diese:
oder so:
Ersteres ist effizienter, wenn Sie viele Zustände pro Bestellung, die zweite, wenn einige Zustände pro Bestellung.
Für die erste Abfrage um schnell arbeiten zu können, erstellen Sie einen index für
status (orderid, statustimestamp)