Mysql
 sql >> Base de données >  >> RDS >> Mysql

joindre une ligne à toutes les lignes et retourner toutes les lignes

Utilisation d'un CROSS JOIN :-

SELECT
    o.id_outlet,
    s_main.periode,
    o.branch, 
    count(msisdn)
FROM
(
    SELECT DISTINCT SUBSTRING(date,1,7) AS periode
    FROM sales
) s_main 
CROSS JOIN outlet o
LEFT OUTER JOIN sales s
ON s_main.periode = SUBSTRING(s.date,1,7)
AND o.id_outlet = s.id_outlet
WHERE (o.STATUS LIKE 'STREET%')
GROUP BY s_main.periode, o.branch, o.id_outlet

Si vous avez un tableau de dates, vous pouvez simplement l'utiliser plutôt que la sous-requête pour obtenir les dates (ce qui évite également le problème potentiel de ne pas avoir de date dans les résultats pour un mois où il n'y a eu aucune vente pour aucun point de vente) .