Autore Topic: [Risolto] Query di somma valori tabella  (Letto 287 volte)

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 28048
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
    • Xataface Italia
[Risolto] Query di somma valori tabella
« il: 19 Nov 2017, 20:07:36 »
Buonasera
Nella mia applicazione di gestione magazzino devo ricavare le entrate degli articoli, ho due tabelle, articoli (elenco prodotti)e righi_doc_acq (movimenti di magazzino).
Nella tabella righi_doc_acq ho i campi 'cod_id' che corrisponde a 'art_id' della tabella articoli ed il campo 'qua' come quantità del movimento della riga.
Nella tabella articoli ho il campo  'esistenza' a cui applico per valorizzarlo la sequente query:
Codice: [Seleziona]
$entrate = array();
$res = xf_db_query("select cod_id, SUM(qua) AS total_qua from righi_doc_acq where `cod_id`='{$record->val('art_id')}'", df_db());
if ( !$res ) throw new Exception(xf_db_error(df_db()));
while ($row = xf_db_fetch_assoc($res) ){
$entrate[$row['total_qua']] = $row['total_qua'];
}
return ($entrate);
Mi ritorna però sempre il valore zero per ogni riga di articoli.
Se tolgo la clausola where mi ritorna il valore somma di tutte le quantità articoli.
Dove sbaglio?
« Ultima modifica: 03 Dic 2017, 18:55:13 da tomtomeight »
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

Offline Ahmed Salvini

  • Appassionato
  • ***
  • Post: 294
    • Mostra profilo
Re:Query di somma valori tabella
« Risposta #1 il: 23 Nov 2017, 17:12:40 »
se usi due tabelle diverse devi creare gli alias anche per le tabelle e il where diventa where a.pippo = b.ciccio

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 28048
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
    • Xataface Italia
Re:Query di somma valori tabella
« Risposta #2 il: 25 Nov 2017, 17:51:41 »
Ho modificato la query come suggerito

Codice: [Seleziona]
$entrate = array();
      $res = xf_db_query("select o.cod, c.qua, SUM(qua) AS total_qua from articoli as o, righi_doc_acq as   c  where o.cod = c.cod_id", df_db());
if ( !$res ) throw new Exception(xf_db_error(df_db()));
while ($row = xf_db_fetch_assoc($res) ){
$entrate[$row['total_qua']] = $row['total_qua'];
}
return ($entrate);

Mi ritorna però nesun valore
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 28048
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
    • Xataface Italia
Re:Query di somma valori tabella
« Risposta #3 il: 03 Dic 2017, 18:54:54 »
Ho risolto, in pratica sbagliavo approccio non dovevo agire nella tabella articoli piuttosto che nella tabella movimenti e poiché più che le entrate dovevo calcolare proprio l'esistenza di magazzino ho agito sulla tabella entrate, questo il codice risolutivo.

Codice: [Seleziona]
function afterSave(&$record){
$cod_id = $record->val('cod_id');
$res=xf_db_query("SELECT SUM(qua) AS 'totalen' FROM righi_doc_acq where cod_id = '$cod_id'");
$row = xf_db_fetch_assoc($res);
$en = $row['totalen'];
$res=xf_db_query("SELECT SUM(qua) AS 'totalus' FROM righi_doc_ven where cod_id = '$cod_id'");
$row = xf_db_fetch_assoc($res);
$us = $row['totalus'];
$es = $en - $us;
$app =& Dataface_Application::getInstance();
    $res = xf_db_query("update `articoli` set `esistenza`= $es where `art_id`='{$record->val('cod_id')}'", $app->db());
}

Resta il problema che in questo modo devo ripetere questo codice anche nella tabella uscite, ma forse conviene unificare le tabelle entrate uscite come solo movimenti di magazzino.
Anche se risolto ulteriore aiuto su come organizzare la gestione è ben accetto. il progetto è condiviso ed a disposizione di chiunque.

« Ultima modifica: 03 Dic 2017, 18:56:37 da tomtomeight »
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

 

Torna su