Hallo liebes Forum,
Ich habe folgendes Problem:
In einer mysql Datenbank habe ich mehrere Tabellen, nennen wir sie mal tabelle1, tabelle2, [...].
Ich möchte jetzt herausfinden, wie viele Datensätze jeweils zB. in tabelle2 und tabelle3 enthalten sind.
Hierzu fallen mir mehrere Möglichkeiten ein.
Ich mach zwei Abfragen (in meinem Fall über php mysql_query()) über SELECT, also:
SELECT * FROM tabelle2
SELECT * FROM tabelle3
Und werte das Ergebnis dann mit mysql_num_rows() aus.
Im Forum fand ich noch die Möglichkeit von
SELECT COUNT(*) FROM tabelle2
SELECT COUNT(*) FROM tabelle3
was mir dann das Zählen schon vorweg nimmt.
Bei der Möglichkeit hab ich aber auch wieder so viele Datenbankabrfagen, wie ich Tabellen untersuchen möchte, was bei vielen Tabellen vermutlich zu Problemen führt.
Zudem finde ich es nicht sehr effektiv, wenn man nur um zu Zählen die ganzen Daten abfragen muss. (Gut, man könnte das * durch ein spezielles Feld ersetzen, aber das macht es im Endeffekt auch nicht besser.)
Abgesehen davon würde ich das gerne in nur einer Datenbankabfrage erledigen.
Dazu fällt mir SHOW TABLE STATUS [LIKE '...'] ein.
Das liefert einem ja ein Ergebnis, in dem zu jeder Tabelle auch die Anzahl der Datensätze steht.
Ausgehend davon bieten sich nun zwei Möglichkeiten um mein Ziel über nur eine DB Anfrage zu erreichen.
Ich könnte mit php aus dem Ergebnis die Datensätze filtern, die ich gerne hätte (was ich aber für recht aufwändig halte), oder ich verwende LIKE.
Um jetzt die Eigenschaft von LIKE mit % zu meinem Vorteil zu nutzen müsste ich die Tabellen ja nach einem gleichen Muster benennen, also zB. zuSuchenA, zuSuchenB, etc. worauf ich dann mit 'zuSuchen%' zugreifen könnte.
Dummerweise muss ich mich dann schon vorher (also beim Erstellen der Tabellen) entschieden haben, welche ich mal später in einer Abfrage zählen möchte. Aber eigentlich soll das dynamisch gehen.
Ich währe sehr froh, wenn mir jemand sagen könnte, welche Methode davon die geeignetste ist, oder mir vll. sogar einen anderen Lösungsweg bieten kann. :)
Freundliche Grüße,
Tina