0

次の問題があります。3つのテーブルがあります。1つは請求書、1つは請求書の送信レコード、1つは請求書の支払いレコードです。

請求書は、請求書が送信されたときにのみ支払うことができます。すべての支払いまたは送信には、invoice_id列に基づく関係があります。

だから私が欲しいのは、最新のアクション(送信または支払い)でソートされた5つの請求書に限定されたリストです。したがって、請求書の最後の送信(date_timeに基づく)が新しい場合、請求書の最後の支払い(date_timeに基づく)はリストの一番上にある必要があり、その逆も同様です。

誰かがこれを達成する方法を知っていますか?

4

1 に答える 1

1

次のようなものを試してください。

SELECT (SELECT MAX(DATE) 
             FROM (SELECT DATE
                     FROM PAYMENTS P
                    WHERE P.INVOICE_ID = IN.INVOICE_ID
                    UNION 
                   SELECT DATE
                     FROM SENDS S
                    WHERE S.INVOICE_ID = IN.INVOICE_ID) SUB) MAX_DATE,
       IN.* 
  FROM INVOICE IN
 ORDER BY 1 DESC
 LIMIT 5

アップデート:

副選択の第2レベル内ではテーブルの請求書にアクセスできないため、上記のSQLは機能しません。

この選択を試してください:

SELECT V.* 
  FROM verkoopfacturen AS V 
   LEFT JOIN (SELECT invoice_id, 
                     MAX(datum) as max_date
               FROM (SELECT P.invoice_id,
                            P.date AS datum 
                        FROM invoice_payments AS P 
                       UNION 
                      SELECT S.file_id,
                             S.datum AS datum 
                        FROM email AS S) SUB
               GROUP BY SUB.invoice_id) SUB2 on V.Verkoopfact_InfId = SUB2.invoice_id
  ORDER BY SUB2.MAX_DATE DESC 
  LIMIT 5
于 2013-02-22T10:57:33.400 に答える