Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dołącz do dwóch stołów, a następnie Sortuj według daty, ALE łącz oba stoły

Jeśli kolumny obu tabel są takie same, możesz użyć 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`

EDYTUJ

Przeczytaj odpowiednią sekcję podręcznika MySQL w sprawie ZWIĄZKÓW. Są inne sposoby wyrażenia tego, ale jest to mój preferowany styl — każdy, kto czyta, powinno być jasne, że klauzula ORDER BY dotyczy wyniku obu stron UNII. Niedbale napisany UNION - nawet z ORDER BY - może nadal pozostawić ostateczny zestaw wyników w nieokreślonej kolejności.

Celem PTYPE jest to, że to zapytanie zwraca dodatkową kolumnę o nazwie PTYPE, która wskazuje, czy każdy pojedynczy wiersz jest FAKTURĄ czy PŁATNOŚCIĄ... tj. z którego z dwóch tabel pochodzi. Nie jest to obowiązkowe, ale często może być przydatne w związku



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy mogę użyć ON DUPLICATE KEY UPDATE z zapytaniem INSERT przy użyciu opcji SET?

  2. Jak używać rozróżniania wielkości liter w instr() w MySQL?

  3. wybierz tytuł trafności na podstawie tagu podobnego do mysql

  4. Zapobieganie wstrzykiwaniu SQL w PHP za pomocą operacji na ciągach

  5. Elokwentny groupBy make SQLSTATE[42000] z poprawnym zapytaniem SQL w Laravel 5.3