Hallo Gemeinde,
bin neu hier und möchte gleich ein problem zur bewältigung bereitstellen ;-).... *hoffe ihr verzeiht mir das...
Grundsätzliches (um was es geht):
1. Forumscript (PHP5/MySQL)
2. Forum hat Hauptebene und eine Unterebene
3. in der Hauptebene soll, neben dem Thread, das Datum des letzten eintrages/eintragenden stehen
und genau da (3) liegt das problem....
um mein forumscript sehr schnell und funktionell zu halten habe ich folgende tabellen in der db erstellt:
- "forum" (hier sind id, threadtitel, ersteller, erstellerdatum sowie lese und antwortzähler enthalten)
- "forum_threads" (hier sind lediglich die id(primär), tid(id "forum") und inhalt des threads)....
- "forum_reps" (hier sind die enstprechenden antworten mit den jeweiligen id´s zur forum-tabelle mit timestamp hinterlegt(id,tid,name,inhalt,timestamp)......
im hauptforum, also erste ebene lese ich die inhalte der tabelle "forum" aus, sortiere sie und zeige sie tabellarisch an.....
nun möchte ich über einen join in der hauptabfrage jedoch zusätzlich die tabelle "forum_reps" abfragen ("forum"-id = "forum_reps"-tid), dort aber nur den timestamp des letzten beitrages zur entsprechnden id von "forum"
bsp.:
"forum":
id: 1
thread: "hallo hallo"
views: 6 (so oft angesehen)
replys: 2 (so oft geantwortet)
timestamp: 1142543627
erstellername: "derJenige"
erstelleremail: "hallo@hallo.de"
diese tabelle wird also als root-tabelle ausgegeben, wobei man auf den thread-titel ("hallo hallo") klicken kann und man so in die zweite eben kommt.....
"forum_thread":
id: (auto_incr)
tid: 1 (id in "forum")
inhalt: "dies ist der Inhalt zum beitrag Hallo Hallo...... und hiermit möchte ich mein persönliches HALLO verkünden"
"forum_reps":
id: (auto_incr), hier mal: 1
tid: 1 ("forum"-id)
antworttitel: "auch hallo"
antwortinhalt: "auch ich verkünde hier mein persönliches HALLO"
antworterstellername: "ich"
antworterstelleremail: "ich@ich.de"
timestamp: 1142543686
id: (auto_incr), hier mal: 2
tid: 1 ("forum"-id)
antworttitel: "ebenso hallo"
antwortinhalt: "und auch ich will mal HALLO sagen"
antworterstellername: "auchich"
antworterstelleremail: "auchich@ichauch.com"
timestamp: 1142596578
nun möchte ich also mit einer abfrage:
select(from a.*, b.timestamp, b.erstellername from forum a LEFT/RIGHT/INNERjoin forum_reps b ON ....... <- Hier fehlt mir der Rest....
erreichen, das er mir alle "forum" datensätze zuzüglich des höchsten timestamps mit zugehörigem ersteller aus "forum_reps" ausgibt
hoffe, ich hab nicht zu sehr übertrieben mit den erklärungen......
vorweg besten dank für jedwede hilfe und aufklärung...... gibt es vielleicht irgendwo join-tut´s von begin bis ins tiefgründigste detail ? (damit meine ich nicht die man von mysql)......
beste grüße, Andreas, alias IceX77
bin neu hier und möchte gleich ein problem zur bewältigung bereitstellen ;-).... *hoffe ihr verzeiht mir das...
Grundsätzliches (um was es geht):
1. Forumscript (PHP5/MySQL)
2. Forum hat Hauptebene und eine Unterebene
3. in der Hauptebene soll, neben dem Thread, das Datum des letzten eintrages/eintragenden stehen
und genau da (3) liegt das problem....
um mein forumscript sehr schnell und funktionell zu halten habe ich folgende tabellen in der db erstellt:
- "forum" (hier sind id, threadtitel, ersteller, erstellerdatum sowie lese und antwortzähler enthalten)
- "forum_threads" (hier sind lediglich die id(primär), tid(id "forum") und inhalt des threads)....
- "forum_reps" (hier sind die enstprechenden antworten mit den jeweiligen id´s zur forum-tabelle mit timestamp hinterlegt(id,tid,name,inhalt,timestamp)......
im hauptforum, also erste ebene lese ich die inhalte der tabelle "forum" aus, sortiere sie und zeige sie tabellarisch an.....
nun möchte ich über einen join in der hauptabfrage jedoch zusätzlich die tabelle "forum_reps" abfragen ("forum"-id = "forum_reps"-tid), dort aber nur den timestamp des letzten beitrages zur entsprechnden id von "forum"
bsp.:
"forum":
id: 1
thread: "hallo hallo"
views: 6 (so oft angesehen)
replys: 2 (so oft geantwortet)
timestamp: 1142543627
erstellername: "derJenige"
erstelleremail: "hallo@hallo.de"
diese tabelle wird also als root-tabelle ausgegeben, wobei man auf den thread-titel ("hallo hallo") klicken kann und man so in die zweite eben kommt.....
"forum_thread":
id: (auto_incr)
tid: 1 (id in "forum")
inhalt: "dies ist der Inhalt zum beitrag Hallo Hallo...... und hiermit möchte ich mein persönliches HALLO verkünden"
"forum_reps":
id: (auto_incr), hier mal: 1
tid: 1 ("forum"-id)
antworttitel: "auch hallo"
antwortinhalt: "auch ich verkünde hier mein persönliches HALLO"
antworterstellername: "ich"
antworterstelleremail: "ich@ich.de"
timestamp: 1142543686
id: (auto_incr), hier mal: 2
tid: 1 ("forum"-id)
antworttitel: "ebenso hallo"
antwortinhalt: "und auch ich will mal HALLO sagen"
antworterstellername: "auchich"
antworterstelleremail: "auchich@ichauch.com"
timestamp: 1142596578
nun möchte ich also mit einer abfrage:
select(from a.*, b.timestamp, b.erstellername from forum a LEFT/RIGHT/INNERjoin forum_reps b ON ....... <- Hier fehlt mir der Rest....
erreichen, das er mir alle "forum" datensätze zuzüglich des höchsten timestamps mit zugehörigem ersteller aus "forum_reps" ausgibt
hoffe, ich hab nicht zu sehr übertrieben mit den erklärungen......
vorweg besten dank für jedwede hilfe und aufklärung...... gibt es vielleicht irgendwo join-tut´s von begin bis ins tiefgründigste detail ? (damit meine ich nicht die man von mysql)......
beste grüße, Andreas, alias IceX77
Kommentar