2013-01-11 4 views
0

J'ai la requête suivante.Enregistrements de saut de requête MySQL

SELECT month(DMY) Month, 
    Year(DMY) Year, 
    Date(DMY) Date, 
    COD_VENDED, 
    @running_total := @running_total + Coalesce(TotalImport, 0) as TotalImport 
from 
(
    SELECT Days.dmy, 
    g.COD_VENDED, 
    TotalImport 
    FROM Days 
    left join 
    (
    select FECHA_EMIS, 
     COD_VENDED, 
     sum(IMPORTE) TotalImport 
    from GVA12 
    group by Date(FECHA_EMIS), Year(FECHA_EMIS) 
) g 
    on date(Days.DMY) = date(g.FECHA_EMIS) 
    and g.COD_VENDED='EX' 
    and Month(g.FECHA_EMIS)=Month(curDate()) 
    and Year(g.FECHA_EMIS)=Year(curDate()) 
    WHERE month(Days.dmy)=Month(curDate()) 
) src, (SELECT @running_total := 0 AS dummy) dummy 

Le problème est qu'il saute des enregistrements dans la base de données.

Le problème est reproduit dans ce SQL Fiddle

+0

Pouvez-vous donner des détails sur le saut? Que voulez-vous dire? – Taryn

+0

Eh bien, si vous regardez la table sur le SQLFiddle, vous verrez qu'il existe des enregistrements pour le 3 janvier. Lorsque je lance la requête, le 3 de Jan renvoie 0. Cela arrive beaucoup. –

Répondre

1

Il semble que le problème est avec votre sous-requête interne:

select FECHA_EMIS, 
    COD_VENDED, 
    sum(IMPORTE) TotalImport 
from GVA12 
group by Date(FECHA_EMIS), Year(FECHA_EMIS) 

Vous seul groupe sur la Date() et Year() en conséquence la valeur du COD_VENDED ne va pas être constant.

Ensuite, quand vous arrivez à la prochaine partie de votre requête vous filtrez pour uniquement les enregistrements avec:

g.COD_VENDED='EX' 

Donc, si la sous-requête retourne une valeur qui ne sont pas EX alors ils obtiennent filtrés.

Vous voudrez peut-être envisager de regrouper par COD_VENDED dans le sous-requête:

SELECT month(DMY) Month, 
    Year(DMY) Year, 
    Date(DMY) Date, 
    COD_VENDED, 
    @running_total := @running_total + Coalesce(TotalImport, 0) as TotalImport 
from 
(
    SELECT Days.dmy, 
    g.COD_VENDED, 
    TotalImport 
    FROM Days 
    left join 
    (
    select FECHA_EMIS, 
     COD_VENDED, 
     sum(IMPORTE) TotalImport 
    from GVA12 
    group by Date(FECHA_EMIS), Year(FECHA_EMIS), COD_VENDED 
) g 
    on date(Days.DMY) = date(g.FECHA_EMIS) 
    and g.COD_VENDED='EX' 
    and Month(g.FECHA_EMIS)=Month(curDate()) 
    and Year(g.FECHA_EMIS)=Year(curDate()) 
    WHERE month(Days.dmy)=Month(curDate()) 
) src, (SELECT @running_total := 0 AS dummy) dummy 

Voir SQL Fiddle with Demo

+0

Juste une question, j'essayais de changer l'IMPORTE à l'IMPORTE_GR inclus dans le Fiddle SQL, et je ne pouvais pas. Pouvez-vous voir des erreurs? –

+1

Cela fonctionne - http://sqlfiddle.com/#!2/253a8/10 – Taryn

+0

Merci beaucoup! –

Questions connexes