UNION ALL,半整体COUNT,不同的表格

时间:2017-11-30 15:59:30

标签: mysql

我有四个表fiche_visite_autrefiche_visite_dpffiche_visiteMagasin,在前三个表中,我的日期对应于访问商店的日期。< / p>

通过这个请求,我可以从三个表中获得每个商店的访问次数:

SELECT * FROM(
SELECT fiche_visite_autre.Code_CM as Code_CM, magasin.Nom_Mag, 
COUNT(fiche_visite_autre.Date_Visite) as Nombre_visite, cible_visite.Cible as Cible 
FROM magasin, cible_visite, fiche_visite_autre 
WHERE magasin.Code_CM = cible_visite.Code_CM AND cible_visite.Code_CM = 
fiche_visite_autre.Code_CM GROUP BY fiche_visite_autre.Code_CM

UNION ALL

SELECT fiche_visite_dpf.Code_CM as Code_CM,magasin.Nom_Mag, 
COUNT(fiche_visite_dpf.Date_Visite) as Nombre_visite, cible_visite.Cible as 
Cible
FROM magasin, cible_visite, fiche_visite_dpf 
WHERE magasin.Code_CM = cible_visite.Code_CM AND cible_visite.Code_CM = fiche_visite_dpf.Code_CM GROUP BY fiche_visite_dpf.Code_CM

UNION ALL

SELECT fiche_visite.Code_CM as Code_CM,magasin.Nom_Mag, 
COUNT(fiche_visite.Date_Visite) as Nombre_visite, cible_visite.Cible as Cible 
FROM magasin, cible_visite, fiche_visite
WHERE magasin.Code_CM = cible_visite.Code_CM AND cible_visite.Code_CM = 
fiche_visite.Code_CM GROUP BY fiche_visite.Code_CM) as tmp GROUP BY Code_CM 
ORDER BY Nombre_visite DESC

Table of visit returned

问题是,我有两次在商店购买“BAGNOLES DE L&#OR; ORNE&#39;在两个不同的表中,但在这里只有一个。

我的目标是获得正确的访问次数,就像我在商店购买的那样#NANTERRE&#39;在同一张桌子上有2次访问。

(对不起我的英语我和法语:)

1 个答案:

答案 0 :(得分:0)

我的解决方案:

SELECT Code_CM, Nom_Mag, SUM(Nombre_visite) as Nombre_visite, Cible FROM (
            SELECT fiche_visite_autre.Date_Visite as DateVisite, fiche_visite_autre.Code_CM as Code_CM, magasin.Nom_Mag as Nom_Mag, COUNT(fiche_visite_autre.Date_Visite) as Nombre_visite, cible_visite.Cible as Cible 
            FROM magasin, cible_visite, fiche_visite_autre 
            WHERE magasin.Code_CM = cible_visite.Code_CM AND cible_visite.Code_CM = fiche_visite_autre.Code_CM GROUP BY Code_CM 

            UNION ALL

            SELECT fiche_visite_dpf.Date_Visite as DateVisite, fiche_visite_dpf.Code_CM as Code_CM,magasin.Nom_Mag as Nom_Mag, COUNT(fiche_visite_dpf.Date_Visite) as Nombre_visite, cible_visite.Cible as Cible
            FROM magasin, cible_visite, fiche_visite_dpf 
            WHERE magasin.Code_CM = cible_visite.Code_CM AND cible_visite.Code_CM = fiche_visite_dpf.Code_CM GROUP BY Code_CM

            UNION ALL

            SELECT fiche_visite.Date_Visite as DateVisite, fiche_visite.Code_CM as Code_CM,magasin.Nom_Mag as Nom_Mag, COUNT(fiche_visite.Date_Visite) as Nombre_visite, cible_visite.Cible as Cible 
            FROM magasin, cible_visite, fiche_visite
            WHERE magasin.Code_CM = cible_visite.Code_CM AND cible_visite.Code_CM = fiche_visite.Code_CM GROUP BY Code_CM
            ) as tmp WHERE DateVisite BETWEEN 'start' AND 'end' GROUP BY Code_CM ORDER BY Nombre_visite DESC