Seite 1 von 1

MySQL-Abfrage RANKS_TABLE

Verfasst: 14.01.2007 22:13
von nickvergessen
hi,

ich hab damit ein kleines Problem.
Ich hab hier eine SQL-Abfrage:
http://clusedo.cl.funpic.de/phpBB/sql1.txt

Das was unter SQL 1 steht funktioniert ohne Probleme.
Wnen ich allerdings die Rang-Abschnitte dazunehme (SQL 2), gibt er mir jedes Ergebnis 2mal aus mit beiden Rängen angegeben sind.
Bei 3 Rängen 3mal. Wo liegt da der Fehler?
An der umdefinierung auf:

Code: Alles auswählen

                         $posts[$i]['rank_id'] = $row['rank_id'];
                         $posts[$i]['rank_title'] = $row['rank_title'];
denke ich, ich weiß nur nicht, was ich da nun genau angeben muss.

in meiner Ausgabedatei werden sie wie folgt weiter verwendet:

Code: Alles auswählen

if(!isset($HTTP_GET_VARS['article']))
{
	$fetchposts = phpbb_fetch_posts($board_config['news_forum_ids'], $board_config['news_number_of_news'], $board_config['news_text_length']);

	for ($i = 0; $i < count($fetchposts); $i++)
	{
		$template->assign_block_vars('fetchpost_row', array(
			'TITLE' => $fetchposts[$i]['topic_title'],
                         'MINI_POST_IMG' => $mini_post_img,
                         'POSTER' => $fetchposts[$i]['username'],
                         'POSTER_RANK' => $fetchposts[$i]['rank_title'])
		);
	}
}
Ich hoffe jemand kann mir helfen.

Verfasst: 14.01.2007 22:17
von Banger
Hi,
das erste, was mir auffällt: Du selektierst die Einträge aus der Rangtabelle ohne Bedingung; das solltest Du mal als erstes beheben :)

Verfasst: 15.01.2007 15:28
von nickvergessen
Banger hat geschrieben:Du selektierst die Einträge aus der Rangtabelle ohne Bedingung
wie müsste die aussehen, und wo muss das rein?

Also hab jetzt mal bei der WHERE-Abfrage noch eingebaut:

Code: Alles auswählen

			WHERE
			  t.forum_id IN (' . $forum_sql . ') AND
			  t.topic_time <= ' . time() . ' AND
			  t.topic_poster = u.user_id AND
			  t.topic_first_post_id = pt.post_id AND
			  t.topic_first_post_id = p.post_id AND
u.user_rank = r.rank_id AND
			  t.topic_status <> 2
jetzt bringt er zwar jeden Beitrag nur noch einmal und auch mit dem richtigem Rang, allerdings nur von mir, und nicht mehr von anderen Usern

Re: MySQL-Abfrage RANKS_TABLE

Verfasst: 16.01.2007 15:05
von nickvergessen
ok ich hab jetzt ne andere Lösung gefunden:
http://clusedo.cl.funpic.de/phpBB/rank_news.txt
dürfte aber nicht gerade das optimum sein, da ich bei jedem Beitrag erneut die SQL-Abfrage mache, wnen ich das richtig sehe.
Aber daran lässt sich ja noch feilen, hauptsache es funktioniert erstmal ;)

Verfasst: 16.01.2007 15:21
von Banger
nickvergessen hat geschrieben:jetzt bringt er zwar jeden Beitrag nur noch einmal und auch mit dem richtigem Rang, allerdings nur von mir, und nicht mehr von anderen Usern
Ich denke, das Problem liegt darin, dass Du rein mit Inner Joins arbeitest - d.h., es werden nur die User berücksichtigt, die auch einen Eintrag in der Ranks-Table haben. Du solltest Dich mal mit der JOIN-Syntax auseinandersetzen, insbesondere mit LEFT JOINs.