Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Dupa 20 ani de facultate, am uita...
 Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...
 Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio
 Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik
 

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,368
  • Î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: 20,039
  • Î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 endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

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