- Home
- Categorie
- Coding e Sistemistica
- Coding
- Contare record di più tabelle
-
Contare record di più tabelle
Ciao a tutti,
ho un problemino che pensavo fosse una sciocchezza ma che invece non riesco a risolvere... ho bisogno di contare il numero totale di righe/record di più tabelle, senza però dover fare 1000 query!!
Sono 2 ore che sto ricercando una soluzione su forum e guide, anche stranieri, ho trovato tante possibili soluzioni ma non sono riuscito ad applicarne nemmeno una...
Ad esempio ho trovato qst codice:
[PHP]
SELECT count(a.id) AS id_a
FROM tab1 a
UNION
SELECT count(b.id) AS id_b
FROM tab2 b
UNION
SELECT count(c.id) AS id_c
FROM tab3 c
[/PHP]... ma a parte non aver capito molto la logica, non ho capito come sviluppare il passaggio successivo perché infatti nel modo seguente non funziona per errore di sintassi:
[PHP]
$get_num = @mysql_query("$sql_count",$link) or die("Errore query database: " . mysql_error());
$riga = mysql_fetch_array($get_num);
$totale_link = $riga['id_a','id_b','id_c'];
[/PHP]
-
Ciao, potresti fare in questo modo:
SELECT count(a.id) AS tot
FROM tab1 a
UNION
SELECT count(b.id)
FROM tab2 b
UNION
SELECT count(c.id)
FROM tab3 cCosì ottieni tutti i totali delle varie tabelle, poi in php puoi scorrere i risultati facendo la loro somma.
-
ok, però non ho capito come faccio la somma.... :bho:
infatti se scrivo
[PHP]
$get_num = @mysql_query("$sql_count",$link) or die("Errore query database: " . mysql_error());
$riga = mysql_fetch_array($get_num);
$totale_link = $riga['tot'];[/PHP]
mi dà il numero di record della prima tabella (e rispetto a prima è già un progresso...
ma come faccio a scorrerli e sommarli?
-
Basta utilizzare un ciclo while:
[PHP]$tot = 0;
while($riga = mysql_fetch_array($get_num)){
$tot += $riga['tot'];
}[/PHP]
-
ok adesso funziona!!!
grazie mille!
-
ho cantato vittoria troppo presto.... avevo fatto una prova con 5 delle 14 tabelle di cui devo sommare i record e funzionava, ma quando ho aggiunto le altre 7, alcune di queste non me le prende!! Il bello è che quelle che non mi prende non sono sempre le stesse variano a seconda dell'ordine in cui le metto nel codice. C'è forse un numero limite di tabelle che si possono conteggiare o qualche altra restrizione? Il codice delle tabelle che non sono conteggiate è perfettamente uniforme a quello delle tabelle che mi conteggia... non capisco proprio dov'è l'errore... mi dovrebbe conteggiare 74 record e me ne prende solo 48
...
-
Ma le altre tabelle hanno tutte il campo id?
-
si hanno tutte un campo id e hanno proprio tutte la stessa struttura... faccio qualche altra prova adesso...
-
non ho idea di quale fosse il problema prima, magari avevo sbagliato io nell'adattare il codice, comunque ho provato così adesso funziona!
[PHP]$count = "SELECT countx+county+countz AS total FROM
(SELECT COUNT( * ) AS countx FROM table1) AS x,
(SELECT COUNT( * ) AS county FROM table2) AS y,
(SELECT COUNT( * ) AS countz FROM table3) AS z";$get_tot = @mysql_query("$count",$link) or die("Errore query database: " . mysql_error());
$riga = mysql_fetch_array($get_tot);
$total = $riga['total'];
echo $total;[/PHP]
grazie del supporto e degli spunti!

-
Di sicuro quest'ultimo metodo che hai utilizzato è più efficiente visto che viene restituito già il totale e quindi non bisogna eseguire un ciclo con il php.