2017-11-01 4 views
0

Ich habe den PHP-Code:SELECT count Zeilen aus zwei Tabellen und summieren die Ergebnisse

$query = mysqli_query($mysqli, "SELECT * FROM `table_1`"); 
$result = mysqli_num_rows($query); 

$queryTwo = mysqli_query($mysqli, "SELECT * FROM `table_2`"); 
$resultTwo = mysqli_num_rows($queryTwo); 

$number = $result + $resultTwo; 
return $number; 

Der Punkt ist, dass manchmal die $number Variable NULL zurückgibt, , wenn es nicht annehmen sollte, das zu tun.

Ich habe immer Zeilen in diesen 2 Tabellen, und das zurückgegebene Ergebnis sollte nicht NULL sein, nie.

Ist dies ein richtiger Ansatz, um die Anzahl der Zeilen aus 2 Tabellen zu summieren? Ich verstehe nicht, warum ich manchmal NULL statt einer Zahl bekomme.

Antwort

3

Nun, würde ich vorschlagen, dass Sie es tun wie

select (select count(*) from Table1) + (select count(*) from Table2) 
    as total_rows 

diese Abfrage ausgeführt wird und immer der Wert von total_rows werden Sie wahres Ergebnis zurück

Oder Sie können eine gespeicherte Prozedur erstellen, das gleiche zu tun Ding. wie unten

erklärte
CREATE PROCEDURE sp_Test 
AS 
-- Create two integer values 
DECLARE @tableOneCount int, @tableTwoCount int 

-- Get the number of rows from the first table 
SELECT @tableOneCount = (SELECT COUNT(*) FROM Table1 
         WHERE WhereClause) 
SELECT @tableTwoCount = (SELECT COUNT(*) FROM Table2 
         WHERE WhereClause) 

-- Return the sum of the two table sizes 
SELECT TotalCount = @tableOneCount + @tableTwoCount 
1

Warum Sie nicht mit nur einer Abfrage wie folgt gehen: Sie in einem Schritt das Ergebnis direkt haben und es wird vermeiden, dass die DB zweimal kontaktiert Zwischenergebnis zu holen, und es wird auch vereinfachen dein Programm!

SELECT 
(select count(*) from table_1) 
+ 
(select count(*) from table_2) 
Verwandte Themen