Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
Yoshimo

Kleine MySQL-Kniffelei

Recommended Posts

Hallihallo :P

Ich hab da mal ne Frage:

Ich hab mir selber eine Suchfunktion gebastelt, die folgende Abfrage ausführt

$this->anz = $DB->query("SELECT t.*, p.pid, p.author_id, p.author_name, p.post_date, p.post, f.id as forum_id, f.name as forum_name, f.use_html, g.g_dohtml, p.new_topic, t.pinned, p.forum_id FROM ibf_posts p

         LEFT JOIN ibf_topics t ON (t.tid=p.topic_id)

         LEFT JOIN ibf_forums f ON (f.id=p.forum_id)

         LEFT JOIN ibf_members m ON (m.id=p.author_id)

         LEFT JOIN ibf_groups g ON (m.mgroup=g.g_id)

         WHERE p.new_topic='1' and f.id IN ({$this->search_type}) and t.pinned='0' {$this->result_type['referenz']} ORDER BY f.id, t.title");
Dabei werden einfach wie bei der Standardsuchfunktion eine Menge Felder ausgelesen bei denen nur neue Topics gewählt werden, die nicht gepinnt sind und die in den Foren {$this->search_type} (z.B. '13','14') liegen und deren Postinhalt mit der Angabe in {$this->result_type['referenz']} (z.B. and p.post LIKE '%Test%') übereinstimmt. So weit - so gut! Nun das Problemchen: Ich zähle dann die Ergebnisse ab mit
mysql_num_rows($this->anz)

Das funktioniert auch. Nun das eigentliche Problem:

Ich würde gerne dann noch ausgeben lassen wieviele von den "Treffern" in welchem Forum waren - d.h. Beispiel

Suchwort: Test

Treffer: 25

davon Forum1: 10

Forum2: 15

Gibt es nicht eine Möglichkeit ähnlich wie bei num_rows() abzufragen aber noch zusätzlich ein Kriterium anzubringen? Also zähle die Reihen bei denen forum_id=13.

Wenn es nur über mehrere einzelne Abfragen geht, d.h. man alle Foren einzeln Abfragen muss, dann die Reihen zählen und später dann davon die Summe bilden für die Gesamttreffer würde mich interessieren, ob das stark ins Gewicht fällt - ich meine im schlimmsten Fall gibt es für jedes Forum dann eine eigene Abfrage, was dann die Auflistung nicht wert wäre.

ich hoffe ihr konntet mir bis hierhin folgen *Keks geb*

und ich hoffe heir findet sich ein MySQL-Experte der mir helfen kann ;)

Share this post


Link to post

Du könntest eine Abfrage mit der gleichen Where-Klausel machen, bei dem SELECT ein COUNT() benutzen und das mit dem Group-Parameter auf die Forum-ID kombinieren. Dann erhälst du für jede Forum ID eine Ergebniszeile mit der Anzahl der Treffer und diese Ergebnisse brauchst du nur durchgehen.

Zweite Möglichkeit ist, einfach dein Statement gehen, die Zeilen durchgehen und zählen zu lassen. Wäre also eine programmtechnische Lösung und du ersparst dir ein zweites Statement.

Share this post


Link to post

Hallo Stefan,

wieder mal ein dickes Dankeschön... hätte ich eigentlich selber draufkommen müssen :rolleyes: !

Naja hast mir wieder mal viel weitergeholfen... es funktioniert nun.

Gruß Yoshi :)

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×