php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.04.2006, 22:55  
Neuer Benutzer
 
Registriert seit: 13.04.2006
Beiträge: 11
sovereign
Standard Zeilenanzahl einer tabelle mit WHERE aber ohne schleife?

Hallo phpfriend.de gemeinde

Ich bin nicht neu hier mußte mich aber dennoch wieder neu reggen leider

Wie fast jeder der einen Thread hier eröffnet, stehe ich vor einem Problem.

Was habe ich?
Ich habe 1 Datenbank in der sind 3 Tabellen. Diese 3 Tabellen sind miteinander kreuzweise verstrickt. Dieses erfolgt dadurch, das in der 3. Tabelle die ID der betreffenden Zeile aus Tabelle 1, und in einer 2. spalte die ID der betreffenden Zeile aus Tabelle 2 gespeichert sind. Bitte fragt nicht warum aber das muß so sein auch wenn es auf den ersten blick unlogisch klingen mag.

So nun zu meinem eigentlichen Problem!
Jetzt will ich aus der 3. Tabelle alle die zeilen haben, wo die ID aus der 1. Tabelle beispielsweise 5 lautet. Normal würde ich jetzt anfangen einen temporären Counter zu starten, der mitzählt, wie oft die while Schleife durchlaufen ist.
Da dieses aber aktuell 580 mal passiert und die 3. Tabelle 2800 Zeilen besitzt, würde das recht lange dauern.
Gibt es keine andere Möglichkeit wie z.b. wenn man die Anzahl der Tabellenzeilen mit SHOW TABLE abließt und die mit einer WHERE abfrage erweitert? Habe das schon ausprobiert mit dem WHERE hinter dem LIKE für die tabelle aber leider funktioniert das nicht.
Gibt es eine Möglichkeit um die performence meiner Seite nicht noch unnötigerweise zu belasten?

Über konstruktive detailierte Vorschläge bin ich sehr dankbar, allerdings ich bin noch ein rellativer Noob auf dem Gebiet also wenn es geht nicht nur einen Code posten sondern auch 1-2 zeilen zu schreiben damit ich nicht alles googeln muß

MfG
Lars
sovereign ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.04.2006, 23:51  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Das ganze wäre einfacher, wenn du mal den Aufbau der 3 Tabellen posten würdest (evtl. mit einpaar Beispieldatensätzen und einem beispiel was du als Ergebnis willst).

Klingt für mich bis zu dem Teil an dem du von irgendwelchen Countern und Schleifen redest nach einem Fall für JOIN...!?
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 14.04.2006, 00:17  
Neuer Benutzer
 
Registriert seit: 13.04.2006
Beiträge: 11
sovereign
Standard

Ich hoffe das wird nun nicht als spam gewertet aber so verstet ihr das Problem vielleicht besser. Also ich betreibe eine Websiete die sich mit der kompatibilität von Rohlingen und DVD brennern beschäftigt. Auf meiner Seite sind bereits 370 DVD Brenner (Tabelle 1) und 470 DVD Rohlinge (tabelle 2) eingetragen in der Tabelle 3 sind die Bewertungen eingetragen. um zu wissen wohin diese Bewertung gehört, habe ich die jeweilige ID aus Tabelle 1 und Tabelle 2 in dieser gespeichert.

Jetzt habe ich ein Menu nur für alle Brenner und eines für alle Rohlinge. Genau dafür brauche ich jetzt diesen Wert um immner anzeigen lassen zu können, wieviele Bewertungen zu diesem Brenner oder Rohling vorhanden sind.
Ich hoffe nun ist alles klar verständlich und nachvollziehbar
sovereign ist offline   Mit Zitat antworten
Alt 14.04.2006, 09:46  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von sovereign
Ich hoffe nun ist alles klar verständlich und nachvollziehbar
Klarer wäre dein Problem, wenn du zusätzlich auch die Struktur der Tabellen zeigen würdest.
xabbuh ist offline   Mit Zitat antworten
Alt 14.04.2006, 11:23  
Neuer Benutzer
 
Registriert seit: 13.04.2006
Beiträge: 11
sovereign
Standard

hat sich erledigt danke. Ein Kumpel hat mir nachdem ich ihm den Link gezeigt habe die Antwort präsentiert

PHP-Code:
$sql mysql_query "SELECT * FROM `tabelle3` WHERE `tabelle1_id` = '5'");
$anzahl mysql_num_rows ($sql); 

Der teil mysql_num_rows ($sql); war mir bislang genzlich unbekannt.
sovereign ist offline   Mit Zitat antworten
Alt 14.04.2006, 11:31  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

In diesem Fall ist die MySQL-Funktion COUNT() allerdings geeigneter:
Code:
SELECT COUNT(*) FROM tabelle3 WHERE tabelle1_id = 5
xabbuh ist offline   Mit Zitat antworten
Alt 14.04.2006, 12:10  
Gast
 
Beiträge: n/a
Standard

...weil mysql_query alle Datensätze (in diesem Fall mit allen Felder) von mysql nach php transportiert. Nur um dort mit mysql_num_rows die Anzahl zu bestimmen.
Count() überträgt nur die gewünschte Zahl -> wesentlich effektiver.
  Mit Zitat antworten
Alt 14.04.2006, 21:36  
Neuer Benutzer
 
Registriert seit: 13.04.2006
Beiträge: 11
sovereign
Standard

Cool danke für den Tip Alles was meine Seite beschleunigt, ist mir herzlich willkommen.


Habe es jetzt so geschrieben ist das richtig?

PHP-Code:
$res mysql_query("SELECT COUNT(*) FROM `tabelle3` WHERE `tabelle1_id` = '5'");
$row mysql_fetch_array($res);
$anzahl = ('' . (int) $row[0] . ''); 
sovereign ist offline   Mit Zitat antworten
Alt 14.04.2006, 23:06  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$anzahl = ('' . (int) $row[0] . ''); // schwachfug.
$anzahl = (int)$row[0];  // richtig. 
axo ist offline   Mit Zitat antworten
Alt 15.04.2006, 07:26  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Und mysql_fetch_row() statt mysql_fetch_array() reicht auch aus.
xabbuh ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Prüfen, ob ein Wert in der Tabelle ist Inchie PHP Tipps 2008 2 02.07.2008 21:08
Parsen von Delimitern Basti Tutorials 0 30.09.2006 21:24
Tabelle in While schleife... bubu Datenbanken 1 17.02.2006 15:05
array als Schleife verwenden cyberholic Datenbanken 6 12.01.2006 13:14
[Erledigt] Problem mit dem Füllen einer Tabelle über Formular PHP Tipps 2006 18 10.01.2006 12:51
[Erledigt] Problem mit Anzeige einer Tabelle mit dem Firefox? HTML, Usability und Barrierefreiheit 8 28.11.2005 15:08
Tabelle aktualisieren Datenbanken 3 23.11.2005 09:54
[Erledigt] Tabelle im DIV-Container zentrieren HTML, Usability und Barrierefreiheit 1 21.04.2005 22:28
[Erledigt] Interne Tabelle (DB Tabelle in Array auslesen) PHP Tipps 2005 10 29.03.2005 17:08
[Erledigt] HTML Tabellenzeile in Tabelle einfügen? Datenbanken 2 28.01.2005 00:28
While Schleife mit einem Problem PHP Tipps 2005 16 12.01.2005 21:55
Tabelle auslesen Datenbanken 6 06.01.2005 13:42
[Erledigt] Tabelle in Tabelle ausrichten HTML, Usability und Barrierefreiheit 7 03.01.2005 14:32
Letzter Eintrag in einer Tabelle und Top Five einer Tabelle Datenbanken 2 27.09.2004 06:50
Sortieren anhand einer zweiten Tabelle PHP Tipps 2004 6 20.09.2004 09:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql zeilenanzahl, zeilenanzahl sql, sql zeilenzahl, sql anzahl zeilen, sql schleife ganze tabelle, sql zeilennummer, sql zeilen anzahl, http://www.php.de/datenbanken/39092-zeilenanzahl-einer-tabelle-mit-where-aber-ohne-schleife.html, sql tabelle zeilenzahl, interne tabelle anzahl zeilen, sql tabelle zeilenanzahl in spalten eintragen, mysql tabelle zeilenanzahl, sql anzahl der zeilen einer tabelle, sql anzahl zeilen in where, sql zeilenmenge, mysql sortiert ausgeben aus anderer tabelle zeilenanzahl, sql anzahl zeilen aller tabellen, sql schleife über alle zeilen, zeilenanzahl einer tabelle sql, nur eine zeile php mysql keine-schleife

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.