Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbinden Sie eine Zeile mit allen Zeilen und geben Sie alle Zeilen zurück

Verwendung eines 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

Wenn Sie eine Datumstabelle haben, können Sie diese anstelle der Unterabfrage verwenden, um die Daten abzurufen (was auch das potenzielle Problem vermeidet, dass in den Ergebnissen für einen Monat, in dem es für keine Verkaufsstelle null Verkäufe gab, kein Datum angezeigt wird). .