sql >> Databasteknik >  >> RDS >> Mysql

Hämta poster med JOIN-fråga

Resultatet du får är rätt eftersom det inte finns några poster på ett specifikt dagnamn. Eftersom du vill få alla dagnamn måste du projicera en komplett uppsättning av dagen (med UNION i en SUBQUERY ) och anslut den till din befintliga fråga.

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. Radmönsterigenkänning i SQL

  2. SQL Server Standard Edition High Availability Futures

  3. Hur man uppdaterar länkade tabeller i Access 2016 efter att backend-databasen flyttats till en ny plats

  4. Lösning för att hitta dubbletter av register som involverar STI och förälder-barn-relationer