sql >> Database >  >> RDS >> Mysql

Voeg twee tabellen samen en vervolgens op datum bestellen, MAAR combineer beide tabellen

Als de kolommen van beide tabellen hetzelfde zijn, kunt u een UNION

. gebruiken
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`

BEWERKEN

Lees het relevante gedeelte van de MySQL-handleiding op UNIES. Er zijn andere manieren om dit te formuleren, maar dit is mijn voorkeursstijl - het moet voor iedereen die leest duidelijk zijn dat de ORDER BY-clausule van toepassing is op het resultaat van beide kanten van de UNIE. Een onzorgvuldig geschreven UNION kan - zelfs met een ORDER BY - de uiteindelijke resultatenset in onbepaalde volgorde achterlaten.

Het doel van de PTYPE is dat deze query een extra kolom retourneert met de naam PTYPE, die aangeeft of elke afzonderlijke rij een FACTUUR of een BETALING is... dwz. uit welke van de twee tabellen het komt. Het is niet verplicht, maar kan wel handig zijn binnen een vakbond



  1. CREATE-opdracht geweigerd aan gebruiker?

  2. Verwijderen van één tafel met join

  3. Wat is de beste PostgreSQL GUI? 2021 Vergelijking

  4. hoe tabellen met 1 op veel relaties te combineren in 1 regel record