MySQL Abfrage

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
seemann1965
Mitglied
Beiträge: 495
Registriert: 12.11.2009 19:15

MySQL Abfrage

Beitrag 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
Kaum macht man es richtig, funktioniert es !

Portal der Volksmarine
wolfman24
Mitglied
Beiträge: 892
Registriert: 25.09.2005 13:17

Re: MySQL Abfrage

Beitrag 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.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: MySQL Abfrage

Beitrag 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.
KB:knigge
Benutzeravatar
seemann1965
Mitglied
Beiträge: 495
Registriert: 12.11.2009 19:15

Re: MySQL Abfrage

Beitrag 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>";
Kaum macht man es richtig, funktioniert es !

Portal der Volksmarine
wolfman24
Mitglied
Beiträge: 892
Registriert: 25.09.2005 13:17

Re: MySQL Abfrage

Beitrag 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);
Benutzeravatar
seemann1965
Mitglied
Beiträge: 495
Registriert: 12.11.2009 19:15

Re: MySQL Abfrage

Beitrag von seemann1965 »

Hallo wolfman24,
super und danke.
Geht einwandfrei, wies eben in der Signatur steht.

Gruß seemann
Kaum macht man es richtig, funktioniert es !

Portal der Volksmarine
Antworten

Zurück zu „Coding & Technik“