Anzahl von Tupels in 4 Tabellen gleichzeitig abfragen



  • Grüß Euch!

    In der MySQL-Doku gibt's zwar ein Beispiel dazu wie man die Anzahl der Datensätze in einer einzigen Tabelle abfragen kann, aber nicht wie die Abfrage aussehen müsste, wenn man dies von mehreren Tabellen gleichzeitig tun wollte.

    Ein Beispiel aus der Doku:

    3.3.4.8. Counting Rows
    ...
    mysql> SELECT COUNT() FROM pet;
    +----------+
    | COUNT(
    ) |
    +----------+
    | 9 |
    +----------+

    Mein erster Gedanke:

    $query = "SELECT COUNT(Q_ID), COUNT(A_ID), COUNT(D_ID), COUNT(R_ID)
                FROM questions, articles, discussions, rarticles";
    

    Für erleuchtende Antworten wäre ich dankbar! 😉



  • Hab das jetzt mal mit der Konsole angeschaut. Anscheinend wird die Abfrage zwar "korrekt" ausgeführt, aber eben mit unerwartetem Resultat:

    mysql> select count(Q_ID), count(A_ID) FROM questions, articles;
    +-------------+-------------+
    | count(Q_ID) | count(A_ID) |
    +-------------+-------------+
    |          42 |          42 |
    +-------------+-------------+
    1 row in set (0.00 sec)
    

    Die Anzahl der Datensätze wird hier offensichtlich multipliziert, weil die Tabellen 'questions' und 'articles' jeweils 7 bzw. 6 Datensätze haben. Die Abfrage mit allen 4 Tabellen hat im PHP-Skript deswegen kein sichtbares Resultat erzeugt, da einer dieser Tabellen Null Datensätze beinhaltete. Ich frage mich dennoch wie ich die Anzahl der Datensätze in 4 Tabellen am schnellsten abfragen kann.


  • Mod

    was spricht gegen 4 anfragen?

    du kannst halt nicht gut 4 total von einander unabhängige werte aus einer db lesen (zumindest wüsste ich nicht wie).
    mach mal ein

    select Q_ID, A_ID FROM questions, articles

    und du wirst sehen, warum da 'blödsinn' raus kommt 😉



  • Dagegen spricht eigentlich nur, dass ich in PHP mehr Zeilen schreiben muss 😃



  • Ein SELECT COUNT kostet in MySQL nicht viel.
    4 Tables in dieser Art abfragen geht nicht.



  • Unix-Tom schrieb:

    Ein SELECT COUNT kostet in MySQL nicht viel.
    4 Tables in dieser Art abfragen geht nicht.

    Ganz genau; es kostet nicht viel. In der Doku steht dazu allerdings, dass dies nur bei MyISAM und ISAM Tabellen der Fall ist.

    Danke für eure Antworten 😉


Anmelden zum Antworten