Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Count in Verbindung mit Join über mehrere Tabellen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Count in Verbindung mit Join über mehrere Tabellen


 
Thommy
07-04-2002, 00:22 
 
Hallo zusammen,

bin mal wieder am grübeln und komm nicht so richtig weiter. Und zwar hab ich folgendes Problem, was ich am besten mal an einem Beispiel erkläre:

Der User kann auf seinem account verschiedene Ordner.

ZB.

1.Ordner "Bücher"
2.Ordner "CD's"

von der DB - Struktur hab ich (in bezug auf das Beispiel) 3 Tabellen

Tabelle1 = user_daten (user_id, vorname ....)
Tabelle2 = buecher (user_id, buchtitel...)
Tabelle3 = cd (user_id, cd_titel...)

Wenn der User sich auf seinen account loggt soll die erste Seite diese Ordner anzeigen und die Anzahl der Einträge im jeweiligen Ordner

Normalerweise würde ich mit FROM (user_daten) und per LEFT JOIN (buecher, cd) die Daten in einer Abfrage aus der DB holen. Ich weiss nur leider nicht wie ich per COUNT (oder irgend ne andere - vielleicht sogar ne php-lösung) bestimmen soll wieviel Einträge dieser user in der buecher bzw. in der cd-Tabelle hat.
Mein Problem besteht darin, dass ich wenns geht , das ganze gern mit einer Abfrage machen würde.

Gibts da irgend ne Möglichkeit ??

Gruss und Danke

Thommy

 
Troublegum
07-04-2002, 00:35 
 
z.b. so:


SELECT u.user_id,u.vorname,count(b.user_id) as buecher FROM user as u LEFT JOIN buecher as b ON u.user_id=b.user_id GROUP BY u.user_id;

 
Thommy
07-04-2002, 09:59 
 
Hallöle,

ja aber was ist mit der CD-Tabelle die wollte ich ja eigentlich mit in die Abfrage bringen und eben nicht für jeden Ordner ne neue Abfrage starten. Wenn ich den Join über beide Tabellen mache und zb. in Bücher sind 3 Einträge und in CD ind 4 Einträge? Dann hast du 7 Datensätze. Die Lösung mit group by funktioniert dann nicht mehr.

Wie könnte ich das machen. Kann ich vielleicht in php das Array welches die Datensätze enthält so auseinandernehmen, dass er bespielsweise alle Array - Bestandteiele löscht welche die gleiche buecher_id haben? (In den 7 Datensätzen existieren ja nur 3 unterschiedliche buecher_id's - und genau die brauche ich) Dann könnte mit Count das Array durchzählen???

Gruss

Thommy:dontknow:

 
Troublegum
07-04-2002, 12:19 
 
stimmt, die cd tabelle noch:
Bitte ausprobiern !

SELECT u.user_id,u.vorname,count(b.user_id) as buecher,count(c.user_id) as cds FROM user as u LEFT JOIN buecher as b ON u.user_id=b.user_id LEFT JOIN cds as c ON c.user_id=u.user_id GROUP BY u.user_id;


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:43 Uhr.