Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL-左连接有问题_Mysql_Left Join - Fatal编程技术网

MYSQL-左连接有问题

MYSQL-左连接有问题,mysql,left-join,Mysql,Left Join,我正在寻找Java swing中的一个bug—动态生成查询的不是我的代码。 很抱歉提出这么大的问题,但我必须在这里报告: select b.CodiceCommercialeRiferimento as "Comm. Rif.", b.PartitaIVA as "PartitaIVA", b.FlgBusteCartotecnica as "Tipo Prodotto", b.ClasseMerceologica as "Cl.Merc.", Periodo0.V as Periodo0,

我正在寻找Java swing中的一个bug—动态生成查询的不是我的代码。 很抱歉提出这么大的问题,但我必须在这里报告:

select  
b.CodiceCommercialeRiferimento as "Comm. Rif.",
b.PartitaIVA as "PartitaIVA",
b.FlgBusteCartotecnica as "Tipo Prodotto",
b.ClasseMerceologica as "Cl.Merc.",
Periodo0.V as Periodo0,
Periodo3.V as Periodo3,
Periodo4.V as Periodo4  
from (          
    select distinct                                          
        if (CodiceCommRif is null, '', DescrizioneCommRif) as CodiceCommercialeRiferimento,
        CommercialeRiferimento,
        trim(concat(bolle.CodiceCliente, ' - ', AnagraficaClientiPI.RagioneSociale1)) as CodiceClientePI,
        trim(concat(AnagraficaClientiPI.PartitaIVA, ' - ', AnagraficaClientiPI.RagioneSociale1)) as PartitaIVA,
        bolle.FlgBusteCartotecnica,
        if(DescrizioneCLM is null, '', DescrizioneCLM) as ClasseMerceologica        
    from bolle                                                              
    left join CodiciCommercialiRiferimento on CodiceCommRif = CommercialeRiferimento        
    inner join AnagraficaClienti as anagraficaclientiPI on bolle.codicecliente = anagraficaclientiPI.codicecliente          
    left join classemerceologica on bolle.ClasseMerceologica = classemerceologica.CodiceCLM  
    where  
        CommercialeRiferimento in ('001')  
        and  AnagraficaClientiPI.PartitaIVA  in ('0569XXXX000')  
        and  bolle.FlgBusteCartotecnica in ('B','C')  
        and  bolle.ClasseMerceologica  like '%%'         
) as b  left join  (                        
    select distinct                                          
        if (CodiceCommRif is null, '', DescrizioneCommRif) as CodiceCommercialeRiferimento, 
        CommercialeRiferimento,
        trim(concat(bolle.CodiceCliente, ' - ', AnagraficaClientiPI.RagioneSociale1)) as CodiceClientePI,
        trim(concat(AnagraficaClientiPI.PartitaIVA, ' - ', AnagraficaClientiPI.RagioneSociale1)) as PartitaIVA,
        bolle.FlgBusteCartotecnica,if(DescrizioneCLM is null, '', DescrizioneCLM) as ClasseMerceologica,              
        sum(if (TipoDocumento = 'N', -ValoreConsegnato, ValoreConsegnato)) as V              
        from bolle              
        inner join bollevalori on bolle.recordid = bollevalori.recordid         
        left join CodiciCommercialiRiferimento on CodiceCommRif = CommercialeRiferimento        
        inner join AnagraficaClienti as anagraficaclientiPI on bolle.codicecliente = anagraficaclientiPI.codicecliente          
        left join classemerceologica on bolle.ClasseMerceologica = classemerceologica.CodiceCLM  
        where  
            CommercialeRiferimento in ('001')  
            and  AnagraficaClientiPI.PartitaIVA  in ('0569XXXX000')  
            and  bolle.FlgBusteCartotecnica in ('B','C')  
            and  bolle.ClasseMerceologica  like '%%'                
            and DataFattura between '2010-01-01' and  '2010-11-30' 
        Group by CommercialeRiferimento,AnagraficaClientiPI.PartitaIVA,bolle.FlgBusteCartotecnica,ClasseMerceologica            
) as Periodo0 on 
    b.CommercialeRiferimento = Periodo0.CommercialeRiferimento 
    and b.CodiceClientePI = Periodo0.CodiceClientePI 
    and b.FlgBusteCartotecnica = Periodo0.FlgBusteCartotecnica 
    and b.ClasseMerceologica = Periodo0.ClasseMerceologica  
left join  (                        
    select distinct                                          
        if (CodiceCommRif is null, '', DescrizioneCommRif) as CodiceCommercialeRiferimento, 
        CommercialeRiferimento,
        trim(concat(bolle.CodiceCliente, ' - ', AnagraficaClientiPI.RagioneSociale1)) as CodiceClientePI,
        trim(concat(AnagraficaClientiPI.PartitaIVA, ' - ', AnagraficaClientiPI.RagioneSociale1)) as PartitaIVA,
        bolle.FlgBusteCartotecnica,
        if(DescrizioneCLM is null, '', DescrizioneCLM) as ClasseMerceologica,              
        sum(if (TipoDocumento = 'N', -ValoreConsegnato, ValoreConsegnato)) as V              
    from bolle              
    inner join bollevalori on bolle.recordid = bollevalori.recordid         
    left join CodiciCommercialiRiferimento on CodiceCommRif = CommercialeRiferimento        
    inner join AnagraficaClienti as anagraficaclientiPI on bolle.codicecliente = anagraficaclientiPI.codicecliente          
    left join classemerceologica on bolle.ClasseMerceologica = classemerceologica.CodiceCLM  
    where  
        CommercialeRiferimento in ('001')  
        and  AnagraficaClientiPI.PartitaIVA  in ('0569XXXX000')  
        and  bolle.FlgBusteCartotecnica in ('B','C')  
        and  bolle.ClasseMerceologica  like '%%'                
        and DataFattura between '2008-01-01' and  '2008-11-30' 
    Group by CommercialeRiferimento,AnagraficaClientiPI.PartitaIVA,bolle.FlgBusteCartotecnica,ClasseMerceologica            
) as Periodo3 on 
    b.CommercialeRiferimento = Periodo3.CommercialeRiferimento 
    and b.CodiceClientePI = Periodo3.CodiceClientePI 
    and b.FlgBusteCartotecnica = Periodo3.FlgBusteCartotecnica 
    and b.ClasseMerceologica = Periodo3.ClasseMerceologica  
left join  (                        
    select distinct                                          
        if (CodiceCommRif is null, '', DescrizioneCommRif) as CodiceCommercialeRiferimento, 
        CommercialeRiferimento,
        trim(concat(bolle.CodiceCliente, ' - ', AnagraficaClientiPI.RagioneSociale1)) as CodiceClientePI,
        trim(concat(AnagraficaClientiPI.PartitaIVA, ' - ', AnagraficaClientiPI.RagioneSociale1)) as PartitaIVA,
        bolle.FlgBusteCartotecnica,
        if(DescrizioneCLM is null, '', DescrizioneCLM) as ClasseMerceologica,              
        sum(if (TipoDocumento = 'N', -ValoreConsegnato, ValoreConsegnato)) as V              
    from bolle              
    inner join bollevalori on bolle.recordid = bollevalori.recordid         
    left join CodiciCommercialiRiferimento on CodiceCommRif = CommercialeRiferimento        
    inner join AnagraficaClienti as anagraficaclientiPI 
    on bolle.codicecliente = anagraficaclientiPI.codicecliente          
    left join classemerceologica on bolle.ClasseMerceologica = classemerceologica.CodiceCLM  
    where  
        CommercialeRiferimento in ('001')  
        and  AnagraficaClientiPI.PartitaIVA  in ('0569XXXX000')  
        and  bolle.FlgBusteCartotecnica in ('B','C')  
        and  bolle.ClasseMerceologica  like '%%'                
        and DataFattura between '2008-01-01' and  '2008-12-31' 
    Group by CommercialeRiferimento,AnagraficaClientiPI.PartitaIVA,bolle.FlgBusteCartotecnica,ClasseMerceologica            
) as Periodo4 on 
    b.CommercialeRiferimento = Periodo4.CommercialeRiferimento 
    and b.CodiceClientePI = Periodo4.CodiceClientePI 
    and b.FlgBusteCartotecnica = Periodo4.FlgBusteCartotecnica 
    and b.ClasseMerceologica = Periodo4.ClasseMerceologica 
where 
    Periodo0.V is not null 
    or Periodo3.V is not null 
    or Periodo4.V is not null 
Group by b.CommercialeRiferimento,b.PartitaIVA,b.FlgBusteCartotecnica,b.ClasseMerceologica;
这个查询更大,我减少了它,所以它保留了这个问题。 结果如下:

"Comm. Rif."    PartitaIVA      "Tipo Prodotto" Cl.Merc.                              Periodo0  Periodo3    Periodo4
Stecca  "0569XXXX000 - POSTEM SPA"  B   "Commesse buste articoli speciali  B"   2199544.40      NULL        NULL
Stecca  "0569XXXX000 - POSTEM SPA"  B   "Inserti buste/sacchetti           B"   3627807.30      NULL        NULL
Stecca  "0569XXXX000 - POSTEM SPA"  B   "Prodotti finiti buste/sacchetti   B"   8007.80         NULL        NULL
所以最后两列为空NULL,而我希望有一些值。我试图通过删除上一个sql代码组,但意外地发现:

"Comm. Rif."    PartitaIVA      "Tipo Prodotto" Cl.Merc.                              Periodo0  Periodo3    Periodo4
Stecca  "0569XXXX000 - POSTEM SPA"  B   "Inserti buste/sacchetti           B"   3627807.30     NULL     NULL        
Stecca  "0569XXXX000 - POSTEM SPA"  B   "Prodotti finiti buste/sacchetti   B"   8007.80        NULL     NULL    
Stecca  "0569XXXX000 - POSTEM SPA"  B   "Commesse buste articoli speciali  B"   2199544.40     NULL     NULL    
Stecca  "0569XXXX000 - POSTEM SPA"  B   "Commesse buste articoli speciali  B"      NULL     3714106.25  4210464.05
Stecca  "0569XXXX000 - POSTEM SPA"  B   "Inserti buste/sacchetti           B"      NULL     2080109.06  2487643.18

似乎分组。。。不分组!:-有什么想法吗?

Group by与聚合函数一起使用,此查询没有

如果执行类似于以下内容的查询:

select a, b, c from a_table group by a, b
您将获得:

a列和b列的不同值

c的一个待定值


这就是为什么分组不分组,而不是这样做的原因。

您可以尝试选择三个“V”列的总和吗?而且我认为你不需要WHERE子句……这个总数似乎有用!!!你能解释一下原因吗?我认为其他条件的WHERE是,这是一个生成的查询。尝试使用更改时,效果很好。可能是关于脏字符串数据的问题?可能吗?如何检查?谢谢你的回复,但我认为这不是问题所在。实际上,我再次测试了它,如果我在像'001'中更改'001'中的四个匹配项,它就可以正常工作。如果我在='001'中再次更改它,它将不起作用。阅读本文时,我注意到LIKE和=运算符之间存在一些差异,我认为这就是原因,可能是空格字符或不同的“collate”。