Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbinden Sie zwei Tabellen, dann Bestellen Sie nach Datum, ABER kombinieren Sie beide Tabellen

Wenn die Spalten beider Tabellen gleich sind, können Sie eine UNION

verwenden
SELECT X.*
  FROM ( SELECT `id`,
                `userID`,
                 'INVOICE' AS PTYPE
                 `amount`,
                 `date`
            FROM `invoices`
           WHERE {$userID} = userID  
          UNION
          SELECT `id`,
                 `userID`,
                 'PAYMENT' AS PTYPE
                 `amount`,
                 `date`
            FROM `payments`
           WHERE {$userID} = userID  
        ) X
 ORDER BY X.`date`

BEARBEITEN

Lesen Sie den entsprechenden Abschnitt des MySQL-Handbuchs auf GEWERKSCHAFTEN. Es gibt andere Möglichkeiten, dies zu formulieren, aber das ist mein bevorzugter Stil - es sollte jedem, der es liest, klar sein, dass die ORDER BY-Klausel auf das Ergebnis von beiden angewendet wird Seiten der UNION. Eine nachlässig geschriebene UNION - selbst mit einem ORDER BY - kann die endgültige Ergebnismenge immer noch in unbestimmter Reihenfolge belassen.

Der Zweck des PTYPE besteht darin, dass diese Abfrage eine zusätzliche Spalte namens PTYPE zurückgibt, die angibt, ob jede einzelne Zeile eine RECHNUNG oder eine ZAHLUNG ist ... dh. aus welcher der beiden Tabellen es stammt. Es ist nicht obligatorisch, kann aber innerhalb einer Gewerkschaft oft nützlich sein