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

Hent poster ved hjælp af JOIN-forespørgsel

Det resultat, du får, er rigtigt, fordi der ikke er nogen registreringer på et bestemt dagnavn. Da du vil have alle dagnavne, skal du projicere et komplet sæt af dage (ved at bruge UNION i en SUBQUERY ) og forenet den med din eksisterende forespørgsel.

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. Forespørgselsydeevneindsigt:Opdag, hvad der bruger ressourcer i din Azure SQL-database?

  2. xampp mysql og phpmyadmin virker ikke

  3. Android:Hvordan beder man en markør om at opdatere ListView efter sletning af databaserækken?

  4. Summen af ​​overlappende datointervaller i MySQL