Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Count non torna valore aspettato

    Salve ho due tabelle in cui dovrei incrociare dei dati per prelevare la fattura (presente in una delle due tabelle) e mostrare le righe :

    SELECT id,id_prodotti
    FROM ddt_righe_sparate
    where id_ddt=2
    and deleted_at is null

    che restituisce : https://imgur.com/E5Luf7w.png



    SELECT id,fattura,id_prodotti FROM ddt_righe_inserite
    where id_ddt=2
    and deleted_at is null

    che restituisce : https://imgur.com/d7T2Gly.png


    quindi ho creato una query per fare la join tra le due

    select
    ddt_righe_ins.fattura,
    prodotti.codice_articolo,
    prodotti.descrizione,
    prodotti.id,
    count(ddt_righe_sparate.id_prodotti) as num_prodotti
    from ddt_righe_sparate
    left join (SELECT * FROM ddt_righe_inserite
    where id_ddt=2
    and deleted_at is null)as ddt_righe_ins on ddt_righe_ins.id_prodotti=ddt_righe_sparate.id_pro dotti
    join prodotti on prodotti.id=ddt_righe_sparate.id_prodotti
    where ddt_righe_sparate.id_ddt=2
    group by
    ddt_righe_ins.fattura,
    prodotti.codice_articolo,
    prodotti.descrizione,
    prodotti.id

    che restituisce : https://imgur.com/RPoPMHE.png

    mi aspetterei correttamente tre righe ma quello che non capisco è come la riga con id 313 abbia 4 come num_prodotti e non 2

  2. #2
    forse perché avendo messo assieme due query te ne conta un po' dalla prima e un po' dalla seconda?

  3. #3
    Quote Originariamente inviata da optime Visualizza il messaggio
    forse perch� avendo messo assieme due query te ne conta un po' dalla prima e un po' dalla seconda?

    ma perche ? se il count e su count(ddt_righe_sparate.id_prodotti) non dovrebbe fare i conti solo su ddt_righe_sparate

    inoltre un altra cosa , la fattura e' presente solo in righe inserite mentre su righe sparate non c'e', a me servirebbe nel caso dell'id 528 2 righe una con fattura (perche corrisponde alla riga inserita) e una senza fattura quindi correttamente le righe dovrebbero essere 4 in cui in una riga e presente la fattura e in una no

    Ultima modifica di pippuccio76; 08-08-2024 a 11:19

  4. #4
    prova senza la group by e vedi cosa esce

  5. #5
    quale group by?

    ho provato anche così :

    codice:
    DROP TABLE IF EXISTS rig_spa;
    CREATE TEMPORARY TABLE rig_spa
    SELECT id_prodotti,count(id) as num_prodotti 
    FROM ddt_righe_sparate
    where id_ddt=2
    and deleted_at is null
    group by id_prodotti;
    
    
    
    
    DROP TABLE IF EXISTS rig_ins;
    CREATE TEMPORARY TABLE rig_ins
    SELECT fattura,id_prodotti,count(id) as num_prodotti
    FROM ddt_righe_inserite
    where id_ddt=2
    and deleted_at is null
    group by fattura,id_prodotti;
    
    
    select * from rig_spa
    left join rig_ins on rig_spa.id_prodotti=rig_ins.id_prodotti
    i conti sono corretti mi manca solo le due righe per il 528 , forse aggiungere un rank e fare la join con il rank ?

  6. #6
    dovrei aver risolto così :

    codice:
    DROP TABLE IF EXISTS rig_spa;
    CREATE TEMPORARY TABLE rig_spa
    SELECT id_prodotti,rank() over (partition by id_prodotti order by id asc) as pos
    FROM ddt_righe_sparate
    where id_ddt=2
    and deleted_at is null;
    
    
    DROP TABLE IF EXISTS rig_ins;
    CREATE TEMPORARY TABLE rig_ins
    SELECT fattura,id_prodotti,rank() over (partition by id_prodotti order by id asc) as pos
    FROM ddt_righe_inserite
    where id_ddt=2
    and deleted_at is null;
    
    
    select rig_spa.id_prodotti,
    rig_ins.fattura, 
    prodotti.codice_articolo,
    prodotti.descrizione,
    count(rig_spa.id_prodotti) as num_prod 
    from rig_spa
    left join rig_ins on rig_spa.id_prodotti=rig_ins.id_prodotti AND rig_spa.pos=rig_ins.pos
    join prodotti on prodotti.id=rig_spa.id_prodotti
    group by rig_spa.id_prodotti,rig_ins.fattura ;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.