Seite 1 von 1

Suche Nutzer, deren letzter Beitrag > ... zurückliegt

Verfasst: 07.02.2010 13:19
von sepp71
Hallo Experten,
meine Suche nach einer Mod. für befristete Gruppenmitgliedschaften war bislang nicht erfolgreich.
Darum würde ich nun versuchen wollen, das Thema zu Fuß per SQL-Browser anzugehen - habe nur leider keine Ahnung von MySQL. :oops:
Ich suche eine Abfrage, die mir folgendes liefert:
Alle User, deren letzter Beitrag zur Forum-ID Nr. X länger als Y Wochen zurückliegt.
Ausgabe der User-IDs wäre ok, Name ein Traum :)

Falls es die Sache vereinfacht, würde auch gehen:
Alle Mitglieder der Gruppe Z, deren letzter Beitrag zur Foren-ID X länger als Y Wochen zurückliegt.

Könnte mir freundlicherweise jemand auf die Sprünge helfen?

Hintergrund:
Nur Mitglieder der Gruppe Z können das Forum sehen und dort schreiben.
Wer sich länger als Y Wochen nicht an der Diskussion beteiligt, soll aus der Gruppe herausgenommen werden.

Ich würde das dann alle paar Wochen von Hand im ACP erledigen.
Vielen Dank für einen guten Tipp!

Sepp

Re: Suche Nutzer, deren letzter Beitrag > ... zurückliegt

Verfasst: 07.02.2010 14:09
von Pyramide
Zum manuellen überprüfen:

Code: Alles auswählen

SELECT u.user_id, u.username, count(p.post_id) AS anzahl_beitraege, from_unixtime(max(p.post_time)) AS letzter_beitrag
FROM phpbb_users u
JOIN phpbb_user_group ug ON (u.user_id = ug.user_id)
JOIN phpbb_groups g ON (g.group_id = ug.group_id)
LEFT JOIN phpbb_posts p ON (p.poster_id = u.user_id AND p.forum_id IN(X))
WHERE g.GROUP_ID IN(Z)
GROUP BY u.user_id, u.username
ORDER BY max(p.post_time) ASC
Oder nur die Benutzer, die vor innerhalb der letzten Y Wochen nichts gepostet haben:

Code: Alles auswählen

SELECT u.user_id, u.username
FROM phpbb_users u
JOIN phpbb_user_group ug ON (u.user_id = ug.user_id)
JOIN phpbb_groups g ON (g.group_id = ug.group_id)
LEFT JOIN phpbb_posts p ON (p.poster_id = u.user_id AND p.forum_id IN(X) AND from_unixtime(p.post_time) > NOW() - INTERVAL Y WEEK)
WHERE g.GROUP_ID IN(Z)
GROUP BY u.user_id
HAVING max(p.post_time) IS NULL
Wenn du die Benutzer allerdings automatisch per Script aus der Gruppe entfernen willst, solltest du bedenken, dass du dann möglicherweise Benutzer entfernst, die gerade erst (wieder) in die Gruppe aufgenommen wurden und deshalb noch keinen aktuellen Beitrag geschrieben haben.

Re: Suche Nutzer, deren letzter Beitrag > ... zurückliegt

Verfasst: 07.02.2010 14:17
von sepp71
Super!!

Das sieht ja hervorragend aus und wird gleich ausprobiert.
Herzlichen Dank, Pyramide!!
Vielen Dank auf für den Zusatztipp für meinen logischen Knick bei den ganz frischen Gruppenmitgliedern, ich werde ihn beherzigen.

Sepp

Edit 16:00 Uhr:
Der Test ist hervorragend gelaufen - vielen Dank dafür, Pyramide!

@verschiebung in die Mod-Bastelstube
Ich persönlich werde es allerdings nicht schaffen, daraus eine richtige Mod. zu machen - mir reicht die o.a. MySQL-Abfrage.