Daniel: PHP und mysql joins

Beitrag lesen

Ahoi Kai,

$qry = "SELECT blog_index.bid, blog_comment.cid, blog_index.stamp, blog_index.autor, blog_index.content, blog_index.thema  FROM blog_index INNER Join blog_comment ON blog_index.bid = blog_comment.bid WHERE archivstamp = '$monat'";

$qry = "SELECT * FROM blog_index "
       ."INNER JOIN blog_comment "
       ."ON(blog_index.bid = blog_comment.bid) "
       ."WHERE archivstamp = '$monat'";

ich hab das jetzt mal so grob zusammen gefasst damits etwas
übersichtlicher ist.

das problem ist das zu blog_index.bid mehrere blog_comment.bid existieren, du aber INNER JOIN verwendest. das ist hier IMHO fehl am platz. du musst LEFT oder RIGHT JOIN benutzten. oder du machst 2 querys, also einmal:

$qry = "SELECT * FROM blog_index "
       ."WHERE archivstamp = '$monat'";

hier dann die while schleife in der du jeden eintrag zu dem monat ausgiebst und nach ausgabe des eintrags verwendust dessen bid und machst ein query an blog_comment.
Also in etwa so:

$qry = "SELECT * FROM blog_index "
       ."WHERE archivstamp = '$monat'";
while(fetch object etc.)
{
  ausgabe der einträge
  $qry = "SELECT * FROM blog_comment "
         ."WHERE bid= '$bid'";
  while(fetch object etc.)
  {
    ausgabe der komentare
  }
}

MfG

--
Alle Angaben wie immer ohne Gewähr
PPPS: ich trinke gerne ab und an mal eine tote Tante.