sql >> Database >  >> RDS >> Mysql

Records ophalen met JOIN-query

Het resultaat dat u krijgt, is goed omdat er geen records zijn voor een specifieke dagnaam. Omdat je alle dagnamen wilt krijgen, moet je een volledige set van dagen projecteren (met UNION in een SUBQUERY ) en voeg deze samen met uw bestaande zoekopdracht.

SELECT  a.day_name,
        COALESCE(b.totalCount, 0) totalCount
FROM
        (
            SELECT 'Sunday' day_name, 1 ordby UNION ALL
            SELECT 'Monday' day_name, 2 ordby UNION ALL
            SELECT 'Tuesday' day_name, 3 ordby UNION ALL
            SELECT 'Wednesday' day_name, 4 ordby UNION ALL
            SELECT 'Thursday' day_name, 5 ordby UNION ALL
            SELECT 'Friday' day_name, 6 ordby UNION ALL
            SELECT 'Saturday' day_name, 7 ordby 
        ) a
        LEFT JOIN
        (
            SELECT  DAYNAME(timestamp) day_name, 
                    COUNT(*) totalCount
            FROM    `emp_info` 
            WHERE   DATE(timestamp ) > DATE_SUB(CURDATE( ) , INTERVAL 1 WEEK ) 
            GROUP   BY DAYNAME(timestamp)
        ) b ON a.day_name = b.day_name
ORDER   BY a.ordby



  1. De juiste manier om een ​​unieke beperking te implementeren die meerdere NULL-waarden in SQL Server toestaat

  2. Gebruik SCOPE_IDENTITY() om de laatst ingevoerde identiteitswaarde in hetzelfde bereik te retourneren (SQL-server)

  3. SQL-query ten minste één van iets

  4. Bepalen of de Oracle-datum in het weekend valt?