Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Hotarare definitiva a instantei, ...

Laptop office 2500 lei

sugerarea bacsisului de catre pat...

Bara Golf 7 Variant
 Xiaomi 13 T Pro notificari

De ce a disparut acest produs din...

Orange anunța mariri de preț, iar...

Recomandare casti audio over ear ...
 La multi ani @Ann0nyym0us!

La multi ani @Andrei11161810!

Glume cu si despre Dacii

Ati cumparat de pe acest site? Es...
 Gand

Diametru si "model" teava...

Eroare L3 dezumidificator StarLight

caut si nu gasesc Philips casetofon
 

Adunare valori din mai multe tabele

- - - - -
  • Please log in to reply
3 replies to this topic

#1
geotux

geotux

    Junior Member

  • Grup: Junior Members
  • Posts: 49
  • Înscris: 12.07.2019
Salut !

Am mai multe tabele cu numele ".....csv" si un tabel `centralizator`.

Vreau sa preiau valorile din campurile Ian, Feb, Mar,...,Dec, din toate tabelele, sa le adun (suma pe fiecare luna), si rezultatul sa il scriu in tabelul `centralizator`.; asta pentru fiecare inregistrare (Nume_prenume) din `centralizator`.

Exemplu :
Pentru "CINDESCU ..." avem valoarea 10 pentru luna Ian, in tabelul `emodnet...csv`
Pentru "CINDESCU ..." avem valoarea 65 pentru luna Ian, in tabelul `poim...csv`
Asta inseamna ca in tabelul `centralizator` , pentru "CINDESCU ...", vom insera valoarea 75 in campul Ianuarie ; facem suma celor doua valori anterioare.

Atasez baza de date `devize`, ce contine doua tabele ca exemplu, plus tabelul `centralizator`.

Codul meu (care nu functioneaza):

ini_set('display_errors',1);
error_reporting(E_ALL);
$conn = mysqli_connect("localhost","root","","devize");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

function mysql_tables($database)
{
$conn = mysqli_connect("localhost","root","","devize");
$tables = array();
$list_tables_sql = "SHOW TABLES FROM {$database} where tables_in_devize <> 'centralizator';";
$result = mysqli_query($conn,$list_tables_sql);
if($result)
while($table = mysqli_fetch_row($result))
{
	 $tables[] = $table[0];
}
return $tables;
}
# tabele existente in baza `devize` (exclus centralizator)
$tables = mysql_tables('devize');

$rez1=0;$rez2=0;$rez3=0;$rez4=0;$rez5=0;$rez6=0;
$rez7=0;$rez8=0;$rez9=0;$rez10=0;$rez11=0;$rez12=0;
// array cu toate numele din tabelul Centralizator
$sql0 = "SELECT `Nume_prenume` FROM centralizator;";
$result_select = mysqli_query($conn,$sql0) or die(mysqli_error());
$nume = array();
while($row = mysqli_fetch_array($result_select)) {
$nume[] = $row; }
// ciclam prin toate tabelele
foreach ($tables as $tabel) {

$sql1="SELECT * FROM `".$tabel."`";
$result1 = mysqli_query($conn, $sql1);
if (mysqli_num_rows($result1) > 0) {

while($row = mysqli_fetch_row($result1)) {
//suma
foreach ($nume as $nm) {
if ($row[0]==$nm) {
$rez1 += $row[1]; //adun valorile din luna Ian pentru fiecare nume din $nume
$rez2 += $row[2];
$rez3 += $row[3];
$rez4 += $row[4];
$rez5 += $row[5];
$rez6 += $row[6];
$rez7 += $row[7];
$rez8 += $row[8];
$rez9 += $row[9];
$rez10 += $row[10];
$rez11 += $row[11];
$rez12 += $row[12];
}
}

}
}
//actaualizam tabelul Centralizator
foreach ($nume as $nu) {
mysqli_query($conn, "UPDATE `centralizator` SET `Ianuarie`='".$rez1."', `Februarie`='".$rez2."',
`Martie`='".$rez3."',`Aprilie`='".$rez4."',`Mai`='".$rez5."',`Iunie`='".$rez6."',
`Iulie`='".$rez7."',`August`='".$rez8."', `Septembrie`='".$rez9."',
`Octombrie`='".$rez10."',`Noiembrie`='".$rez11."',`Decembrie`='".$rez12."' WHERE `Nume_prenume`='$nu' ");
}
}
mysqli_close($conn);

Attached Files



#2
sorin147

sorin147

    Senior Member

  • Grup: Senior Members
  • Posts: 6,228
  • Înscris: 11.08.2003
In functie de cat de mari ai tabelele alea, fie tabela temporara sau view sau doar select si apoi select din ce ai facut.
select nume, sum(ianuarie) from (
select nume, ianuarie from tabela1
union all
select nume, ianuarie from tabela2)as tot
group by nume

- parca asa era Posted Image

Daca ai multe valori, nu-i cea mai buna solutie
Update: o mica modificare (as tot)

Attached Files


Edited by sorin147, 04 February 2022 - 15:39.


#3
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 19,942
  • Înscris: 24.02.2006
sistemele de gestiune a bazelor de date sunt gandite sa lucreze cu date. cat mai multe date. ai sanse foarte mici sa reusesti sa faci tu ceva in cod mai eficient decat pot ele in limbajul lor nativ.
asa ca solutia in cazul tau este sa inveti despre limbajul SQL, nu sa incerci sa rezlvi totul in PHP

#4
geotux

geotux

    Junior Member

  • Grup: Junior Members
  • Posts: 49
  • Înscris: 12.07.2019
Super ! Multumesc mult !

Da,...corect..ma chinuiam degeaba cu tot felul de array-uri in PHP;

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate