MYSQL - Trouble with left join -


i'm looking bug in java swing (it isn't code) dynamically generates query. sorry big query, i've report here:

select   b.codicecommercialeriferimento "comm. rif.", b.partitaiva "partitaiva", b.flgbustecartotecnica "tipo prodotto", b.classemerceologica "cl.merc.", periodo0.v periodo0, periodo3.v periodo3, periodo4.v periodo4   (               select distinct                                                   if (codicecommrif null, '', descrizionecommrif) codicecommercialeriferimento,         commercialeriferimento,         trim(concat(bolle.codicecliente, ' - ', anagraficaclientipi.ragionesociale1)) codiceclientepi,         trim(concat(anagraficaclientipi.partitaiva, ' - ', anagraficaclientipi.ragionesociale1)) partitaiva,         bolle.flgbustecartotecnica,         if(descrizioneclm null, '', descrizioneclm) classemerceologica             bolle                                                                   left join codicicommercialiriferimento on codicecommrif = commercialeriferimento             inner join anagraficaclienti anagraficaclientipi on bolle.codicecliente = anagraficaclientipi.codicecliente               left join classemerceologica on bolle.classemerceologica = classemerceologica.codiceclm                 commercialeriferimento in ('001')           ,  anagraficaclientipi.partitaiva  in ('0569xxxx000')           ,  bolle.flgbustecartotecnica in ('b','c')           ,  bolle.classemerceologica  '%%'          ) b  left join  (                             select distinct                                                   if (codicecommrif null, '', descrizionecommrif) codicecommercialeriferimento,          commercialeriferimento,         trim(concat(bolle.codicecliente, ' - ', anagraficaclientipi.ragionesociale1)) codiceclientepi,         trim(concat(anagraficaclientipi.partitaiva, ' - ', anagraficaclientipi.ragionesociale1)) partitaiva,         bolle.flgbustecartotecnica,if(descrizioneclm null, '', descrizioneclm) classemerceologica,                       sum(if (tipodocumento = 'n', -valoreconsegnato, valoreconsegnato)) v                       bolle                       inner join bollevalori on bolle.recordid = bollevalori.recordid                  left join codicicommercialiriferimento on codicecommrif = commercialeriferimento                 inner join anagraficaclienti anagraficaclientipi on bolle.codicecliente = anagraficaclientipi.codicecliente                   left join classemerceologica on bolle.classemerceologica = classemerceologica.codiceclm                         commercialeriferimento in ('001')               ,  anagraficaclientipi.partitaiva  in ('0569xxxx000')               ,  bolle.flgbustecartotecnica in ('b','c')               ,  bolle.classemerceologica  '%%'                             , datafattura between '2010-01-01' ,  '2010-11-30'          group commercialeriferimento,anagraficaclientipi.partitaiva,bolle.flgbustecartotecnica,classemerceologica             ) periodo0 on      b.commercialeriferimento = periodo0.commercialeriferimento      , b.codiceclientepi = periodo0.codiceclientepi      , b.flgbustecartotecnica = periodo0.flgbustecartotecnica      , b.classemerceologica = periodo0.classemerceologica   left join  (                             select distinct                                                   if (codicecommrif null, '', descrizionecommrif) codicecommercialeriferimento,          commercialeriferimento,         trim(concat(bolle.codicecliente, ' - ', anagraficaclientipi.ragionesociale1)) codiceclientepi,         trim(concat(anagraficaclientipi.partitaiva, ' - ', anagraficaclientipi.ragionesociale1)) partitaiva,         bolle.flgbustecartotecnica,         if(descrizioneclm null, '', descrizioneclm) classemerceologica,                       sum(if (tipodocumento = 'n', -valoreconsegnato, valoreconsegnato)) v                   bolle                   inner join bollevalori on bolle.recordid = bollevalori.recordid              left join codicicommercialiriferimento on codicecommrif = commercialeriferimento             inner join anagraficaclienti anagraficaclientipi on bolle.codicecliente = anagraficaclientipi.codicecliente               left join classemerceologica on bolle.classemerceologica = classemerceologica.codiceclm                 commercialeriferimento in ('001')           ,  anagraficaclientipi.partitaiva  in ('0569xxxx000')           ,  bolle.flgbustecartotecnica in ('b','c')           ,  bolle.classemerceologica  '%%'                         , datafattura between '2008-01-01' ,  '2008-11-30'      group commercialeriferimento,anagraficaclientipi.partitaiva,bolle.flgbustecartotecnica,classemerceologica             ) periodo3 on      b.commercialeriferimento = periodo3.commercialeriferimento      , b.codiceclientepi = periodo3.codiceclientepi      , b.flgbustecartotecnica = periodo3.flgbustecartotecnica      , b.classemerceologica = periodo3.classemerceologica   left join  (                             select distinct                                                   if (codicecommrif null, '', descrizionecommrif) codicecommercialeriferimento,          commercialeriferimento,         trim(concat(bolle.codicecliente, ' - ', anagraficaclientipi.ragionesociale1)) codiceclientepi,         trim(concat(anagraficaclientipi.partitaiva, ' - ', anagraficaclientipi.ragionesociale1)) partitaiva,         bolle.flgbustecartotecnica,         if(descrizioneclm null, '', descrizioneclm) classemerceologica,                       sum(if (tipodocumento = 'n', -valoreconsegnato, valoreconsegnato)) v                   bolle                   inner join bollevalori on bolle.recordid = bollevalori.recordid              left join codicicommercialiriferimento on codicecommrif = commercialeriferimento             inner join anagraficaclienti anagraficaclientipi      on bolle.codicecliente = anagraficaclientipi.codicecliente               left join classemerceologica on bolle.classemerceologica = classemerceologica.codiceclm                 commercialeriferimento in ('001')           ,  anagraficaclientipi.partitaiva  in ('0569xxxx000')           ,  bolle.flgbustecartotecnica in ('b','c')           ,  bolle.classemerceologica  '%%'                         , datafattura between '2008-01-01' ,  '2008-12-31'      group commercialeriferimento,anagraficaclientipi.partitaiva,bolle.flgbustecartotecnica,classemerceologica             ) periodo4 on      b.commercialeriferimento = periodo4.commercialeriferimento      , b.codiceclientepi = periodo4.codiceclientepi      , b.flgbustecartotecnica = periodo4.flgbustecartotecnica      , b.classemerceologica = periodo4.classemerceologica       periodo0.v not null      or periodo3.v not null      or periodo4.v not null  group b.commercialeriferimento,b.partitaiva,b.flgbustecartotecnica,b.classemerceologica; 

the query bigger, reduced keep issue. here result:

"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 

so i've 2 last columns empty (null), whereas expected values. tried remove last sql code (group by) , surprisingly get:

"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 

seems grouping... doesn't group! :-( idea?

group used aggregate functions, query has none.

if perform query say:

select a, b, c a_table group a, b 

you get:

  • distinct values , b columns

  • an undetermined value c

so that's why "grouping doesn't group", that's not how it.


Comments

Popular posts from this blog

asp.net - repeatedly call AddImageUrl(url) to assemble pdf document -

java - Android recognize cell phone with keyboard or not? -

iphone - How would you achieve a LED Scrolling effect? -