Pagina 3 di 5 primaprima 1 2 3 4 5 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 49

Hybrid View

  1. #1
    ma come fai a indirizzare c1 nella query esterna? casomai sarà valori_conta...

  2. #2
    non ti dà errore quella query?

  3. #3
    Quote Originariamente inviata da optime Visualizza il messaggio
    non ti dà errore quella query?

    Ci sono quasi , mi manca solo l'ultimo passaggio

    codice:
    SELECT 
      `valori_conta`.`magazzino`, 
       s.magazzino as magazzino_sap,
      `valori_conta`.`codice_materiale`, 
      `valori_conta`.`numero_conta`, 
      `valori_conta`.`unita_misura`, 
      s.codice_materiale as codice_sap, 
      `s`.`valore_totale_sap`, 
      `s`.`valore_singolo_sap`, 
      `s`.`quantita_sap`, 
      valori_conta.quantita_totale
    from 
      sap_dati_ricevuti s
      LEFT JOIN(
        SELECT 
          c1.magazzino, 
          c1.codice_materiale, 
          c1.numero_conta, 
          c1.unita_misura, 
          sum(c1.quantita) as quantita_totale 
        FROM 
          conta_materiale c1 
          JOIN (
            SELECT 
              max(id) id, 
              max(numero_conta) 
            FROM 
              conta_materiale 
            GROUP BY 
              magazzino, 
              codice_materiale
          ) c2 ON c1.id = c2.id 
        WHERE 
          c1.id_inventario = '4' 
        GROUP BY 
          c1.codice_materiale, 
          c1.magazzino, 
          c1.numero_conta, 
          c1.unita_misura
    ) valori_conta on s.codice_materiale = valori_conta.codice_materiale
    Lo dovrei avere il join left solo sui valori con lo stasso magazzino perchè al momento mi li sta mettendo in qualunque riga dove trova lo stesso codice_materiale

    Inolltre mi sono accorto che non somma quantità totale di conta come dovrebbe
    Ultima modifica di pippuccio76; 18-11-2022 a 12:50

  4. #4
    aggiungi nella JOIN il magazzino come vincolo

    SELECT campi FROM t1 JOIN t2 ON t1.campo1=t2.campo1 AND t1.campo2=t2.campo2 ....

  5. #5
    Quote Originariamente inviata da optime Visualizza il messaggio
    aggiungi nella JOIN il magazzino come vincolo

    SELECT campi FROM t1 JOIN t2 ON t1.campo1=t2.campo1 AND t1.campo2=t2.campo2 ....

    Ci siamo quasi :


    codice:
    SELECT 
      `valori_conta`.`magazzino`, 
      `valori_conta`.`codice_materiale`, 
      `valori_conta`.`numero_conta`, 
      `valori_conta`.`unita_misura`, 
      s.codice_materiale as codice_sap, 
      `s`.`valore_totale_sap`, 
      `s`.`valore_singolo_sap`, 
      `s`.`quantita_sap`, 
       s.magazzino as magazzino_sap,
      valori_conta.quantita_totale
    from 
      sap_dati_ricevuti s
      LEFT JOIN(
        SELECT 
          c1.magazzino, 
          c1.codice_materiale, 
          c1.numero_conta, 
          c1.unita_misura, 
          sum(c1.quantita) as quantita_totale 
        FROM 
          conta_materiale c1 
          JOIN (
            SELECT 
              max(id) id, 
              max(numero_conta) 
            FROM 
              conta_materiale 
            GROUP BY 
              magazzino, 
              codice_materiale
          ) c2 ON c1.id = c2.id 
        WHERE 
          c1.id_inventario = '4' 
        GROUP BY 
          c1.codice_materiale, 
          c1.magazzino, 
          c1.numero_conta, 
          c1.unita_misura
    ) valori_conta on s.codice_materiale = valori_conta.codice_materiale AND valori_conta.magazzino = s.magazzino
    manca che esegua le somme correttamente che devono essere fatte per numero_conta e per codice_materiale

  6. #6
    allora devi lasciare solo numero_conta e per codice_materiale nella GROUP BY della query che fa le somme

  7. #7
    Scusa anche magazzino potrebbe servirmi perchè lo stesso codice potrebbe esssere in più magazzini quindi tolgo solo l unità di misura ?

    Fatta così :

    codice:
    SELECT 
      `valori_conta`.`magazzino`, 
      `valori_conta`.`codice_materiale`, 
      `valori_conta`.`numero_conta`, 
      `s`.`unita_misura`, 
      s.codice_materiale as codice_sap, 
      `s`.`valore_totale_sap`, 
      `s`.`valore_singolo_sap`, 
      `s`.`quantita_sap`, 
      valori_conta.quantita_totale
    from 
      sap_dati_ricevuti s
      LEFT JOIN(
        SELECT 
          c1.magazzino, 
          c1.codice_materiale, 
          c1.numero_conta, 
          sum(c1.quantita) as quantita_totale 
        FROM 
          conta_materiale c1 
          JOIN (
            SELECT 
              max(id) id, 
              max(numero_conta) 
            FROM 
              conta_materiale 
            GROUP BY 
              magazzino, 
              codice_materiale
          ) c2 ON c1.id = c2.id 
        WHERE 
          c1.id_inventario = '4' 
        GROUP BY 
          c1.codice_materiale, 
          c1.magazzino, 
          c1.numero_conta
    ) valori_conta on s.codice_materiale = valori_conta.codice_materiale And valori_conta.magazzino = s.magazzino



    Ma i conti non tornano , sembra che come quantita totale prenda solo una riga senza fare il sum

  8. #8
    perché nella group by ci sono troppi elementi: non dovevano essere due?

  9. #9
    Come ti dicevo lo stesso codice_materiale potrebbe essere in più magazzini quindi deve sommare la quantita contata dello stesso codice , della stessa conta e dello stesso magazzino .

  10. #10
    pippuccio, mi hai detto due cose diverse, ma comunque nessun problema: nella group by metti tutti gli elementi che ti servono per raggruppare

    se poi i conti non tornano ti chiederei di fare un esempio con dei dati su cui poter ragionare

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 © 2026 vBulletin Solutions, Inc. All rights reserved.