torniamo a bomba.... non devi cambiare le carte in tavola. Qui dici:Originariamente inviato da albyjkl
SELECT
DISTINCT(venduto.cli_id) AS id,
clienti.des1,
target_cli.target,
SUM(venduto. cc_prz_sc * venduto.cc_tot_btg) AS vend,
SUM(venduto. cc_prz_sc * venduto.cc_tot_btg) - target_cli.target AS diff
FROM clienti
INNER JOIN venduto ON clienti.id = venduto.cli_id
INNER JOIN target_cli ON clienti.id = target_cli.id_cli
WHERE venduto.cc_data >='2009-01-01'
AND venduto.cc_data <='2009-12-31'
AND target_cli.anno = '2009'
GROUP BY clienti.des1
dimmi che c'entra:Il problema è che la tabella target_cli non è del tutto popolata
quindi nel risultato della SELCT mi mancano tutti i record
non popolati nella tabella target_cli, mentre vorrei avere tutti
i record e sostituire il campo target inesistente con target = 0
eventualmente la tua query dovrebbe essere: (dico eventualmente perche' nessuno all'infuori di te conosce la struttura di questo db)codice:FROM venduto LEFT JOIN target_cli
clienti.des1 cos'e' ??? forse dovresti usare clienti.id ???codice:SELECT venduto.cli_id AS id, clienti.des1, target_cli.target, SUM(venduto.cc_prz_sc * venduto.cc_tot_btg) AS vend, SUM(venduto.cc_prz_sc * venduto.cc_tot_btg) - target_cli.target AS diff FROM clienti LEFT JOIN venduto ON clienti.id = venduto.cli_id LEFT JOIN target_cli ON clienti.id = target_cli.id_cli WHERE venduto.cc_data between '2009-01-01' AND '2009-12-31' AND target_cli.anno = '2009' GROUP BY clienti.des1![]()

Rispondi quotando