sql >> Databáze >  >> RDS >> Mysql

Spojte dva stoly a poté Objednejte podle data, ALE zkombinujte oba stoly

Pokud jsou sloupce obou tabulek stejné, můžete použít 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`

UPRAVIT

Přečtěte si příslušnou část příručky MySQL na odborech. Existují i ​​jiné způsoby, jak to formulovat, ale toto je můj preferovaný styl – každému, kdo čte, by mělo být jasné, že klauzule ORDER BY se vztahuje na výsledek obojí strany UNIE. Neopatrně napsaná UNION – dokonce i s ORDER BY – může stále ponechat konečný soubor výsledků v neurčitém pořadí.

Účelem PTYPE je, že tento dotaz vrací další sloupec nazvaný PTYPE, který udává, zda je každý jednotlivý řádek FAKTURA nebo PLATBA... tzn. ze které ze dvou tabulek pochází. Není to povinné, ale v rámci odborů může být často užitečné



  1. Mechanismus, který Oracle sleduje, když bereme horké zálohy

  2. 4 tipy pro nastavení upozornění SQL Server

  3. Mysql převést int na MAC

  4. Laravel:Osévání více jedinečných sloupců pomocí Faker