Zum Inhalt springen

Probleme mit MySQL-Abfrage aus mehreren Tabellen gleichzeitig


Empfohlene Beiträge

Moin Ihr!

Ich hab da mal ein Problem mit einer MySQL-Abfrage. Die Sache ist folgende: Ich baue grad ein Forum bestehend aus drei Tabellen. Eine enthält die Foren selbst (forum_master), eine andere Titel und Datum der Threads (forum_threads) und die letzte den eigentlichen Inhalt der Threads (forum_content).

Nun möchte ich die Thread-Titel nach Datum des letzten Beitrags geordnet auflisten. Dazu benötige ich sämtliche Spalten aus der forum_threads-Tabelle und eben das Datum aus der forum_content-Tabelle.

Jede der Tabellen enthält 3 Einträge, und normalerweise sollten da auch nur drei Einträge in der Liste erscheinen, aber mit meiner Abfrage sind's seltsamerweise 18 Einträge, wobei die 3 besagten jeweils 6x wiederholt werden...

Hab keine Ahnung, woran's liegt, aber ich hab bisher leider auch noch keine Erfahrungen mit Abfragen aus mehreren Tabellen...

Naja, hier mal der Quellcode:

 <?php

 if($HTTP_SESSION_VARS)

   $datum1 = $HTTP_SESSION_VARS["lastlogin"];

 else

   $datum1 = date ("Y-m-d H:i:s");


 $abfrage = "SELECT forum_threads.* FROM forum_threads WHERE forum_threads.forumID=$id1 ORDER BY forum_content.datum2 DESC";

 $erg = mysql_db_query($dbname,$abfrage,$conn);

 while(list($id,$Name,$author,$datum,$datum2,$typ,$forumID,$symbol) = mysql_fetch_row($erg))

 {  

   $replycount = "SELECT COUNT(*) AS anzahl FROM forum_content WHERE threadID = $id";

   $replies = mysql_db_query($dbname,$replycount,$conn);

   $count = mysql_fetch_array($replies);

   $count[anzahl] = $count[anzahl] - 1;


   $datumcheck = "SELECT datum,datum2 FROM forum_content WHERE threadID = $id ORDER BY datum2 DESC";

   $lastdate1 = mysql_db_query($dbname,$datumcheck,$conn);

   list($lastdate,$lastdate2) = mysql_fetch_row($lastdate1);


   echo "<tr>\n<td class='forum'><b><a href='c_forum_thread.php?thread=$id&forum=$id1'>$Name</a></b></td>

   <td class='forum'><p>$author</p></td>

   <td class='forum'><p>$count[anzahl]</p></td>";


   if($lastdate2 >= $datum1)

     echo "<td class='forum'><p>$lastdate <b>neu!!</b></p></td>\n</tr>\n";

   else

     echo "<td class='forum'><p>$lastdate</p></td>\n</tr>\n";

 }

?>

 

Ach ja, das Forum ist als Betaversion bereits hier zu finden: http://forum.freeqnet.de

<FONT COLOR="#a62a2a" SIZE="1">[ 20. September 2001 12:58: Beitrag 1 mal editiert, zuletzt von beetFreeQ ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmmm, also versuchs doch mal so !

<*SELECT "SELECT * FROM Suppliers JOIN Products ON (Suppliers.SupplierID = Products.SupplierID)"*>

Hier sind Suppliers und Products 2 Tabellen. Es wird nach der SupplierID geordnet (sprich die 2. tabelle ordnet die Reihen nach der SupplierID die in beiden Tabellen vorhanden ist). Ausgelesen werden hier natürlich beide tabellen komplett !

Dannach gehst du mit dem Select ganz normal weiter (MAP, GET usw.).

Hoffe das hilft dir !

Bei mir hats bis auf die Formatierungen der Ergebnistabelle hingehaun !

Gruß

A.f.h.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...