sql >> Database teknologi >  >> RDS >> Mysql

Slå sammen to borde, derefter Bestil efter dato, MEN kombinerer begge borde

Hvis kolonnerne i begge tabeller er ens, kan du bruge en 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`

REDIGER

Læs det relevante afsnit i MySQL-manualen på UNIONS. Der er andre måder at formulere dette på, men dette er min foretrukne stil - det burde være klart for enhver, der læser, at ORDER BY-sætningen gælder for resultatet af begge Unionens sider. En skødesløst skrevet UNION - selv med en ORDER BY - kan stadig efterlade det endelige resultat i ubestemt rækkefølge.

Formålet med PTYPE er, at denne forespørgsel returnerer en ekstra kolonne kaldet PTYPE, der angiver om hver enkelt række er en FAKTURA eller en BETALING... dvs. hvilken af ​​de to borde den kommer fra. Det er ikke obligatorisk, men kan ofte være nyttigt i en fagforening



  1. Algoritme til at undgå SQL-injektion på MSSQL Server fra C#-kode?

  2. ImportError:Intet modul med navnet 'MySQL'

  3. Er der en måde at returnere id'et for en række, der lige er oprettet i MySQL med PHP?

  4. SQL Reference for begyndere