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)
Problem mit einer Abfrage: [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problem mit einer Abfrage:


 
mk85
11-04-2004, 18:27 
 
Hallo
ich hab folgendes Problem...
diese Datenbankstruktur liegt vor:

foren_thread: threadid | fid (forumid)| ...
foren_post: postid | tid | ...

nun möchte ich mit einer Abfrage die Anzahl der Threads und dazugehörige Anzahl an Posts ermitteln...

also ich habs mit dieser Abfrage hier versucht aber es funktioniert so nicht
vielleicht kann mir jemand meinen Fehler sagen...?

$sql = "SELECT COUNT(thread.threadid) AS threadcount, COUNT(post.postid) AS postcount
FROM ".$kl_tbl_pre."forum_thread thread
INNER JOIN ".$kl_tbl_pre."forum_post post ON thread.threadid = post.tid
WHERE thread.fid = $fid
GROUP BY thread.threadid";

 
jochenj
11-04-2004, 19:42 
 
deine spalte threadid ist die gleiche wie die spalte tid oder irre ich mich da?

falls nicht, zähle die postid group by tid und am schluss die num_rows von mysql, dann brauchst du kein inner join, hast eine tabelle mit post für jedes thread und eine variable mit der gesatzahl der threads.

 
mk85
11-04-2004, 21:02 
 
erstmal danke für die antwort jochenj

ja die spalte tid in der post tabelle kennzeichnet die zugehörigkeit zum Thread (threadid in der threads tabelle)

das JOIN brauch ich doch aber irgendwie... weil ich muss ja beide tabellen abfragen den ich möchte ja folgendes haben
- alle threads die einem bestimmten forum gehören zählen
- und dann die anzahl der posts von diesen threads zählen

 
TobiaZ
11-04-2004, 21:05 
 
generell könntest du mal das ergebnis des obigen querys nennen, man kannst zwar denken, aber sicher ist sicher.

 
mk85
11-04-2004, 21:23 
 
es kommt kein fehler...aber es kommen immer zwei gleiche zahlen raus
die wieder die postanzahl nocht die threadzahl sind...:confused: :(

 
Innuendo
11-04-2004, 22:03 
 
Überprüfe die SQl-Anweisung doch mal im phpmyadmin.
Oder Du lässt Dir $sql mal per echo ausgeben.

 
mk85
12-04-2004, 18:28 
 
okay erstmal danke für den Hinweis, Innuendo, bin jetzt etwas weiter gekommen

mit dieser Abfrage:

SELECT thread.threadid, COUNT( post.postid )
FROM test_forum_thread thread
INNER JOIN test_forum_post post ON thread.threadid = post.tid
WHERE thread.fid =8
GROUP BY post.tid

Ergebnis:
threadid | COUNT( post.postid )
113 | 34
115 | 3
119 | 6
120 | 5
122 | 2
123 | 23

so jetzt müssen nur noch alle posts (rechte spalte) zusammengerechnet werden und die der thread geht jetzt mit num_rows()

 
mk85
13-04-2004, 09:13 
 
ich habs jetzt so hinbekommen...

//Anzahl der Themen und Beitäge in diesem Forum
$sql = "SELECT thread.threadid, COUNT( post.postid ) AS postcount,
MAX(post.postid) AS lastpostid
FROM test_forum_thread thread
INNER JOIN test_forum_post post ON thread.threadid = post.tid
WHERE thread.fid = $fid
GROUP BY thread.threadid";
$subresult = mysql_query($sql) or die(mysql_error());

//Anzahl der Threads
$threadcount = mysql_num_rows($subresult);

//Anzahl der Posts
$postcount = 0;
for($ii=0;$ii<$threadcount;$ii++)
{
mysql_data_seek($subresult,$ii);
$subrow = mysql_fetch_assoc($subresult);
$postcount += $subrow['postcount'];
}
ist zwar ein wenig umständlich (oder nicht)... aber es tut


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:49 Uhr.