Seite 1 von 1

MySQL Abfrage

Verfasst: 09.08.2011 21:23
von seemann1965
Hallo,
ich suche einen Möglichkeit auf der Startseite, die Gesamtheit der Datenbankeinträge darzustellen.
Mit "select * from tabelle2" geht es auch die Menge der Einträge zu zeigen, aber eben nur von dieser einen Tabelle2 (Es sind 10 Kameraden eingetragen!).
Wie kann man es machen; wenn man die Daten von 3 Tabellen addieren muss vor der Ausgabe?
Also "Tabelle1" 5Datensätze, "Tabelle2" 10Datensätze und "Tabelle3" 15Datensätze, nun wünsche ich mir die Ausgabe z.B.: "Es sind 30 Kameraden eingetragen!".

Code: Alles auswählen

// Verbindung oeffnen und Datenbank ausweahlen
$conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
if ($conID)
{
	mysql_select_db( $db_name, $conID );
}

// SQL-Befehl für den Zugriff
$sql = "SELECT * FROM tabelle2";

// ausführen des mysql-Befehls
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
    die('Ungültige Abfrage: ' . mysql_error());
}

// Anzeige der Anzahl der Einträge
$anzahl = mysql_num_rows($db_erg);
echo "<br><font face=verdana size=3><p align=center>Es sind <strong>" .$anzahl. "</strong> Kameraden eingetragen!</p></font>";
Gruß seemann

Re: MySQL Abfrage

Verfasst: 09.08.2011 23:32
von wolfman24
Wenn du nur die Anzahl der Einträge möchtest, solltest du folgende SQL Query benutzen:

Code: Alles auswählen

$sql = "SELECT COUNT(*) FROM tabelle2";
Dann hast du in

Code: Alles auswählen

$db_erg = mysql_query( $sql );
direkt die Anzahl stehen. Eine SELECT * Abfrage sollte man prinzipiell nicht machen, weil dann immer alle Daten der Tabelle aus der DB geholt werden und das ist meistens nicht nötig, schon gar nicht, wenn man nur die Anzahl der Datensätze wissen möchte.

Zum Problem: Einfachste Lösung: Du machst das ganze nochmals für Tabelle3 und nennst das Ergebnis $db_erg3 usw. Am Ende addierst du die Einzelergebnisse einfach: $db_erg = $db_erg1 + $db_erg2 + $db_erg3 usw.

Re: MySQL Abfrage

Verfasst: 09.08.2011 23:42
von Pyramide
seemann1965 hat geschrieben:Wie kann man es machen; wenn man die Daten von 3 Tabellen addieren muss vor der Ausgabe?
Also "Tabelle1" 5Datensätze, "Tabelle2" 10Datensätze und "Tabelle3" 15Datensätze, nun wünsche ich mir die Ausgabe z.B.: "Es sind 30 Kameraden eingetragen!".
Ich würde sagen: Dein Datenbankdesign ändern. Denn wenn du Datensätze der gleichen Art in unterschiedlichen Tabellen speicherst, hört sich das sehr stark nach schlechtem Tabellendesign an.

Re: MySQL Abfrage

Verfasst: 09.08.2011 23:56
von seemann1965
Hallo Pyramide,
es mag sein, da ich aber kein Profi bin, muss ich mein spärliches Wissen
so einsetzen, dass ich die Wünsche der User erfüllen kann.
Die Tabellen sind in ihrer Struktur unterschiedlich, weil unterschiedliche Dienstgrade, Aufgaben, Fachrichtungen, Schiffe und und und.
Für mich war es so einfacher um es in der php-Datei darzustellen.
Ich habe 24 Tabellen mit gut 500 Kameraden und sicherlich kommen noch gut 20 Tabellen hinzu.
wolfman24 hat geschrieben:Einfachste Lösung: Du machst das ganze nochmals für Tabelle3 und nennst das Ergebnis $db_erg3 usw. Am Ende addierst du die Einzelergebnisse einfach: $db_erg = $db_erg1 + $db_erg2 + $db_erg3 usw.
...danke, wolfman24, werde ich probieren und mich melden.

Gruß seemann

Edit: Rechnen tuts zwar aber etwas muss falsch sein, weil Ergebnis = Ist 19 - Soll 201.
Bei Verwendung "SELECT Count(*) FROM frosch"; wird nur 1 ausgegeben statt 10,
bei "SELECT * FROM frosch"; wird richtiger Weise 10 ausgegeben, habe deshalb "id" eingesetzt.
Wenn man jedes Ergebnis in "$anzahl = mysql_num_rows($db_erg...)" einzeln ausgibt stimmt der Wert,
aber wenn man "$anzahl = mysql_num_rows($db_erg1)+($db_erg2)+($db_erg3);" verwendet kommt 19 anstatt 201 raus.
Kann natürlich auch alles falsch sein, wie ichs verbaut habe.
HILFE!!!

Gruß seemann

Code: Alles auswählen

// Verbindung oeffnen und Datenbank ausweahlen
$conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
if ($conID)
{
	mysql_select_db( $db_name, $conID );
}

// SQL-Befehl für den Zugriff
$sql1 = "SELECT id FROM frosch";    // 10 Datensätze
$sql2 = "SELECT id FROM labo";    // 7 Datensätze
$sql3 = "SELECT id FROM kss1159";    // 184 Datensätze

// ausführen des mysql-Befehls
$db_erg1 = mysql_query( $sql1 );
$db_erg2 = mysql_query( $sql2 );
$db_erg3 = mysql_query( $sql3 );

if ( ! $db_erg1 )
{
    die('Ungültige Abfrage! ' . mysql_error());
}

if ( ! $db_erg2 )
{
    die('Ungültige Abfrage! ' . mysql_error());
}

if ( ! $db_erg3 )
{
    die('Ungültige Abfrage! ' . mysql_error());
}

// Anzeige der Anzahl der Einträge
$anzahl = mysql_num_rows($db_erg1)+($db_erg2)+($db_erg3);
echo "<br><font face=verdana size=3><p align=center>Es sind <strong>" .$anzahl. "</strong> Kameraden eingetragen!</p></font>";

Re: MySQL Abfrage

Verfasst: 10.08.2011 09:59
von wolfman24
Wenn schon, dann nicht

Code: Alles auswählen

$anzahl = mysql_num_rows($db_erg1)+($db_erg2)+($db_erg3);
sondern

Code: Alles auswählen

$anzahl = mysql_num_rows($db_erg1) + mysql_num_rows($db_erg2) + mysql_num_rows($db_erg3);

Re: MySQL Abfrage

Verfasst: 10.08.2011 13:51
von seemann1965
Hallo wolfman24,
super und danke.
Geht einwandfrei, wies eben in der Signatur steht.

Gruß seemann