sql >> データベース >  >> RDS >> Mysql

2つのテーブルを結合してから、日付で並べ替えますが、両方のテーブルを組み合わせます

    両方のテーブルの列が同じである場合は、UNIONを使用できます

    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`
    

    編集

    MySQLマニュアル の関連セクションをお読みください UNIONSで。これを表現する方法は他にもありますが、これは私の好みのスタイルです。ORDERBY句が両方の結果に適用されることを読んでいる人には明らかなはずです。 UNIONの側面。不注意に書かれたUNIONは、たとえORDER BYがあっても、最終的な結果セットを不確定な順序で残す可能性があります。

    PTYPEの目的は、このクエリがPTYPEと呼ばれる追加の列を返すことです。これは、個々の行がINVOICEであるかPAYMENTであるかを示します。 2つのテーブルのどちらから来ているのか。これは必須ではありませんが、多くの場合、ユニオン内で役立つ場合があります



    1. get_result()mysqlndが有効になっていても機能しません

    2. CentOS6.2でMySQLのバージョンを5.1から5.5に更新します

    3. Ruby On Railsは遅い...?

    4. PHP-致命的なエラー:メンバー関数bind_param()の呼び出し