MyBB.de Forum
2 Tabellen in einem Query - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: 2 Tabellen in einem Query (/thread-13786.html)



2 Tabellen in einem Query - Waluigi - 08.07.2009

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


RE: 2 Tabellen in einem Query - linwinman - 08.07.2009

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.


RE: 2 Tabellen in einem Query - Waluigi - 09.07.2009

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


RE: 2 Tabellen in einem Query - linwinman - 09.07.2009

Verwende die erste Variante. Wink


RE: 2 Tabellen in einem Query - Waluigi - 09.07.2009

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


RE: 2 Tabellen in einem Query - linwinman - 09.07.2009

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); 



RE: 2 Tabellen in einem Query - Waluigi - 09.07.2009

Vielen Dank!!!

Es klappt nun einwandfrei.

Danke Danke! Big Grin


RE: 2 Tabellen in einem Query - Megaleecher - 13.07.2009

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


RE: 2 Tabellen in einem Query - Michael - 14.07.2009

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;