MyBB.de Forum

Normale Version: 2 Tabellen in einem Query
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Community,

Ich bin gerade dabei eine Blätterfunktion zu basteln.

Leider musste ich gerade feststellen, dass ich nur eine Query-Abfrage machen darf und eine Query Abfrage innerhalb einer anderen Abfrage nicht funktioniert.

Nun weiß ich leider nicht weiter.

Ich möchte aus einem Forum Überschrift, Datum, Antworten, Ansichten und die eigentliche Message auslesen lassen.

Leider sind diese Variabeln in 2 verschiedenen Tabellen: mybb_posts und mybb_threads.

Meine aktuelle Abfrage hätte ich so gemacht:
PHP-Code:
$abfrage "SELECT * FROM forum_threads WHERE visible='1' AND fid='30' ORDER BY tid DESC LIMIT $start$eintraege_pro_seite"

und dann noch

PHP-Code:
$query_two mysql_query ("SELECT tid,message FROM ".$prefix."posts WHERE replyto='0' AND tid='".$threads["tid"]."'"); 

Gibt es eine Möglichkeit diese Sachen auszugeben, indem man nur einen Query braucht?

Wäre euch wirklich unendlich dankbar!Rolleyes

MfG
Waluigi
Hallo Waluigi,

auf die Schnelle, deshalb ohne Garantie auf absolut richtige Syntax Wink :
PHP-Code:
// Abfrage
$query $db->query("
    SELECT t.subject, t.dateline, t.views, t.replies, p.message, p.replyto
    FROM "
.TABLE_PREFIX."threads t
    LEFT JOIN "
.TABLE_PREFIX."posts p ON (t.tid=p.tid)
    WHERE 1=1 AND t.fid = '30' AND t.visible = '1' 
    OR t.fid = '30' AND p.replyto = '0'
    ORDER BY t.tid DESC
    LIMIT 
$start$max_posts 
"
);
// Ergebnis
$spec_list $db->fetch_array($query); 

Die jew. Werte kannst du dann z. B. mit "{$spec_list['subject']}", "{$spec_list['dateline']}" etc. ausgeben.
Kleine Frage noch.

Wie gebe ich die Variabeln genau aus?

1.
<div>{$spec_list['dateline']}</div>

2.
<div>".$spec_list['dateline']."</div>

3.
<div>"{$spec_list['dateline']}"</div>

4.
<div>".{$spec_list['dateline']}."</div>

Welche Ausgabe davon wäre dann richtig? Rolleyes
Verwende die erste Variante. Wink
irgendwie wird das replyto = '0' nicht angenommen. Der zeigt bei mir leider auch noch die an, die replyto auf einer anderen Zahl stehen haben Sad

Kann mir vielleicht einer helfen, diesen kleinen Fehler noch zu beheben?

MfG,
Waluigi
Verwende bitte einmal diese Query:
PHP-Code:
// Abfrage
$query $db->query("
    SELECT t.subject, t.dateline, t.views, t.replies, p.message, p.replyto
    FROM "
.TABLE_PREFIX."threads t
    LEFT JOIN "
.TABLE_PREFIX."posts p ON (t.tid=p.tid)
    WHERE 1=1 AND t.fid = '30' AND t.visible = '1' AND p.replyto = '0'
    ORDER BY t.tid DESC
    LIMIT 
$start$max_posts 
"
);
// Ergebnis
$spec_list $db->fetch_array($query); 
Vielen Dank!!!

Es klappt nun einwandfrei.

Danke Danke! Big Grin
Ich hänge mich da gleich mal dazu^^

Aslo ich habe auch 2 Querys und würde die gerne in einer vereinen, jedohc versteh ich da einiges noch nicht so recht...

Query 1:
PHP-Code:
$db->query("SELECT uid, time FROM ".TABLE_PREFIX."threadviewer WHERE tid=".$tid." ORDER BY time DESC"

Query 2:
PHP-Code:
$db->query("SELECT * FROM ".TABLE_PREFIX."users WHERE uid=".$record['uid']) 

Ich würde das gerne so haben, dass ich die uid mit dem ersten Query verbinden kann und dann zu jeder Reihe aus dem ersten Query das passende Gegenstück aus der 2. Query habe.

Ist das überhaupt möglich?!

Würde mcih freuen, wenn mir da jemand behilflich sein könnte Wink

MfG Megaleecher
Code:
SELECT t.time, u.*
FROM ".TABLE_PREFIX."threadviewer t
LEFT JOIN ".TABLE_PREFIX."users u ON (t.uid=u.uid)
WHERE t.tid=".$tid."
ORDER BY t.time DESC;