Left join e group by

martedì 25 marzo 2008 - 15.28

squilibrio Profilo | Expert

Ho una select che recupera i record di una testata sommando gli elementi di dettaglio ... tramite il group by ed il sum(campo_dettaglio)

il mio problema è che non tutte le testata potrebbero avere un dettaglio.... allora penso:

risolvo il problema mettendo left join invece di inner join

ma.... sopresa

noto che il group by non mi torna nessun valore (se ho solo testata e nessun dettaglio)

come posso risolvere il problema?


Grazie

alx_81 Profilo | Guru

>risolvo il problema mettendo left join invece di inner join
>ma.... sopresa
>noto che il group by non mi torna nessun valore (se ho solo testata
>e nessun dettaglio)
>come posso risolvere il problema?
Posta la tua query con possibilmente le CREATE e alcune INSERT. Così possiamo intervenire meglio
>
>
>Grazie
di nulla!

Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

squilibrio Profilo | Expert

Grazie per l'aiuto..... la tabella ha questa struttura:


DROP TABLE IF EXISTS `AAAA`.`webspedizioni`;
CREATE TABLE `AAAA`.`webspedizioni` (
`id` int(10) unsigned NOT NULL auto_increment,
`idCliente` int(10) unsigned NOT NULL,
`idWebRubrica` int(10) unsigned NOT NULL,
`destRagioneSociale` varchar(255) NOT NULL,
`destNazione` varchar(255) NOT NULL,
`destIndirizzo` varchar(255) NOT NULL,
`destComune` varchar(255) NOT NULL,
`destProvincia` varchar(255) NOT NULL,
`destCap` varchar(10) NOT NULL,
`destTelefono` varchar(255) NOT NULL,
`destEmail` varchar(255) NOT NULL,
`colli` int(10) unsigned NOT NULL,
`idServizio` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=latin1;


DROP TABLE IF EXISTS `AAAA`.`webspedizionidettaglio`;
CREATE TABLE `AAAA`.`webspedizionidettaglio` (
`id` int(10) unsigned NOT NULL auto_increment,
`idSpedizioni` int(10) unsigned NOT NULL,
`lunghezza` double NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_webspedizionidettaglio_1` (`idSpedizioni`),
CONSTRAINT `FK_webspedizionidettaglio_1` FOREIGN KEY (`idSpedizioni`) REFERENCES `webspedizioni` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=176 DEFAULT CHARSET=latin1;



DROP TABLE IF EXISTS `AAAA`.`webservizi`;
CREATE TABLE `AAAA`.`webservizi` (
`id` int(10) unsigned NOT NULL auto_increment,
`idServizio` int(10) unsigned NOT NULL,
`descrizione` varchar(255) NOT NULL,
`coefficente` double NOT NULL,
`idAzienda` int(10) unsigned NOT NULL,
`data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2824 DEFAULT CHARSET=latin1;


La select è


SELECT dataSpedizione, destRagioneSociale, destNazione, destIndirizzo, destComune, destProvincia, destCap, colli, webservizi.Descrizione AS Servizio, SUM(peso) AS Peso, SUM(pesoVolumetrico) AS Volumetrico FROM webspedizioni LEFT JOIN webservizi ON webservizi.id = webspedizioni.idServizio LEFT JOIN webspedizionidettaglio ON webspedizionidettaglio.idSpedizioni = webspedizioni.id WHERE statoSpedizione = 'I' dataSpedizione < DATE_ADD(date(now()),Interval 1 day) GROUP BY idSpedizioni

il problema è che se non record nella tabella di dettaglio webspedizionidettaglio il group by non mi fa vedere le info della testata

alx_81 Profilo | Guru

>il group by non mi fa vedere le info della testata
Secondo me il problema sta nel filtro.. Quella where probabilmente esclude alcuni record che vorresti vedere..
Probabilmente ci sono alcune condizioni che puoi permetterti di mettere nella ON di una delle join.


Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

squilibrio Profilo | Expert

no no ... aggiungendo un record nel dettaglio l'elemento viene visualizzato

alx_81 Profilo | Guru

>no no ... aggiungendo un record nel dettaglio l'elemento viene
>visualizzato
Per favore, passami anche alcune insert dei tuoi dati così proviamo
Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5