2012-03-27 15 views
0

Ich kann nicht scheinen, diese Informationen in anderen Fragen zu finden, obwohl ich denke, dass es ein grundlegendes Problem ist.Wähle Rowid aus mehreren Tabellen

In MySQL, ich versuche, die Anzahl der Zeilen in der Spalte "rowid" aus der einen Tabelle, die in Tausenden von verschiedenen Schemas auftritt (daher ist die Auflistung der Schemas einzeln unpraktisch).

Hinweis: Einige Schemas haben die Tabelle nicht und daher keine Informationen.

Danke!

bearbeiten:

versuchte ich das Drehbuch unter und es hielt Rückkehr:

Fatal error: Call to a member function execute() ...

Dies war auf die zweite Funktion auszuführen. Um dies zu beheben, ich manuell eingegeben das Ergebnis der ersten SQL in den zweiten Variable sql aber das gab mir:

Fatal error: Call to a member function prepare() on a non-object in _____ on line 18 (aka the first prepare statement)

Hier ist der Code. Du wirst sehen, ich habe mit ihm ein Bündel (I verwendet eine andere Methode connect, um zu sehen, ob das etwas geändert) spielen um

<html> 
<head> 
</head> 
<body> 

<?php 
$db = mysql_connect(localhost,******, *******); 


$sql = "SELECT TABLE_SCHEMA, TABLE_NAME 
     FROM INFORMATION_SCHEMA.COLUMNS 
     WHERE TABLE_NAME = 'Ftrans /*this is our specific table name*/' 
     AND COLUMN_NAME = 'rowid'"; 


$stmt = $db->prepare($sql); /*this is where I got the second error*/ 
$stmt->execute(); 

while ($row = $stmt->fetchObject()) { 
    // $sql2 = "SELECT COUNT(*) FROM $row->TABLE_SCHEMA.$row->TABLE_NAME"; 


$sql2 = "SELECT COUNT(*) FROM fp_AIRG.Ftransi"; 
    $stmt2 = $db->prepare($sql2); 
    $stmt2->execute(); 
$count = $stmt2->fetchColumn(); 
} 
mysql_close($db); 
?> 

</body> 
</html> 
+0

Sie möchten die gleiche SQL-Abfrage in Tausenden von verschiedenen Datenbanken ausführen? – alexis

+0

SenorAmor: Das ist, was ich bisher versucht habe, der Ratschlag, den ich von einer anderen Seite bekommen habe. SELECT COUNT (rowid) FROM schema..table Ich bekomme einen "Fehlercode: 1064. Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe entspricht '.Ftrans' in Zeile 2 " Alexis: Ich könnte meine SQL-Sprache vermischen, aber ich habe eine Datenbank, in der ich Tausende von Schemas habe, von denen die meisten die Tabelle haben (sagen TA), die dann eine hat spezifische Spalte (Rowid), die ich brauche. Die SQL würde dann hoffentlich mir die Anzahl aller Rowiden in jedem Schema zurückgeben. – KBB1

+0

Sie haben mysql_connect anstelle von PDO verwendet. Schau dir mein Beispiel nochmal an. – nnichols

Antwort

1
SELECT TABLE_SCHEMA, TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'tbl_name' 
AND COLUMN_NAME = 'rowid' 

dann für jeden Datensatz zurückgegeben -

SELECT COUNT(rowid) 
FROM {TABLE_SCHEMA}.{TABLE_NAME} 
Hier

ist eine PHP-basierte Implementierung -

<?php 

try { 
    $db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'username', 'password'); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

$sql = "SELECT TABLE_SCHEMA, TABLE_NAME 
     FROM INFORMATION_SCHEMA.COLUMNS 
     WHERE TABLE_NAME = 'tbl_name' 
     AND COLUMN_NAME = 'rowid'"; 

$stmt = $db->prepare($sql); 
$stmt->execute(); 

while ($row = $stmt->fetchObject()) { 
    $sql = "SELECT COUNT(rowid) FROM `{$row->TABLE_SCHEMA}`.`{$row->TABLE_NAME}`"; 
    $stmt2 = $db->prepare($sql); 
    $stmt2->execute(); 
    $count = $stmt2->fetchColumn(); 

    echo "{$row->TABLE_SCHEMA}.{$row->TABLE_NAME}: $count\n"; 
} 

ich habe nicht laufen diese so kann es einige Fehler drin, aber es sollte erhalten Du gehst in die richtige Richtung.

+0

Ich habe die erste Abfrage (ersetzt Tbl_name mit der richtigen Tabelle) und es gibt keine Datensätze zurück - vielleicht weil Information_schema nicht auf meiner Datenbank funktioniert? – KBB1

+0

Welche MySQL-Version verwenden Sie? Es ist seit 5.0 verfügbar. – nnichols

+0

Ich benutze persönlich Workbench 5.2, aber es könnte möglich sein, dass der Server in einer älteren Version eingerichtet wurde, wäre das wichtig? – KBB1