Philipp Hasenfratz: 2 tabellen überprüfen

Beitrag lesen

Halihallo Markus

das klappt prima, aber ich würde auch gerne die ohne einträge noch hinten dran listen. geht das auch?

Nicht in einem Query (ich hoffe, dass ich nicht schon wieder einen Denkfehler mache...),
obwohl ich glaube, dass dein Vorhaben auch keinen Sinn ergibt. Du möchtest die Top-20
Poster ausgeben, was haben da Poster mit 0 Postings zu suchen?
Um noch alle Poster mit 0 Beiträgen auszugeben, benutze:

SELECT u.*
   FROM
      guestbook AS gb
      LEFT OUTER JOIN user as u ON u.id=gb.ownerid
   WHERE
      gb.ownerid = NULL

dies ist meiner Meinung nach die schnellste Möglichkeit, lasse mich jedoch gerne
korrigieren (bei einem Fehler im Query sowieso). Zur Implementierung: Einfach den zuvor
geposteten Query ausführen, die Results anzeigen und dann den oben beschriebenen (und
wieder ausgeben).
Zum Query: Alle Poster auszugeben, die noch keinen Beitrag geschrieben haben ist
gleichbedeutend mit der Aussage: Alle Poster ausgeben, welche _nicht_ mit mindestens
einem Eintrag aus der gb - Tabelle verknüpft werden können. Dies kann man über einen
LEFT OUTER JOIN erreichen, welcher eben die nicht in der anderen Tabelle existierenden
Felder (bezogen auf die Kondition u.id=gb.ownerid) mit dem Wert NULL füllt. Auf diesen
kannst du in dem WHERE (WHERE gb.ownerid=NULL) prüfen und bekommst so alle User zurück,
welche noch keinen Beitrag geschrieben haben.

Viele Grüsse

Philipp