2 tabellen auslesen

  • Themenstarter Themenstarter starfoxfs
  • Beginndatum Beginndatum
S

starfoxfs

Hi zusammen,

Ich möchte 2 Sql Tabellen auslesen und diese dann mit einer while schleife wirdgeben, zusätzlich noch mit Order by je Tabelle

So hab ich jetzt mal gecodet:

PHP:
$sql = "SELECT * FROM Tabelle1, Tabelle2 WHERE tabelle1.boardid ='102'
AND tabelle2.boardid='99' AND visible='1' ORDER BY lastposttime LIMIT 3";

$result = mysql_query($sql);
while($data = mysql_fetch_array($result)) {
echo $data['news'];
}

Es sollen News aus 2 verschiedenen Tabellen ausgelesen werden und dann in einer while schleife angezeigt werden.

Momentan wird allerdings gar nichts angezeigt.

Ps: das visible 1 sowie lastposttime und limit 3 soll auch für beide tabellen gelten
 
Du musst bei der WHERE & bei der ORDER BY Klausel noch den Tabellennamen ergänzen. Ansonsten kontrollier mal was mysql_error() ausgibt!
 
So hab ich mal gemacht, selbes spiel es wird nichts angezeigt auf der Seite und auch kein Mysql Error Seite einfach leer.

Hier nochmal der Quellcode :

PHP:
$abfrage = "SELECT * FROM bb2_threads, bb3_threads WHERE 
bb2_threads.boardid = '104' AND bb3_threads.boardid = '37'
WHERE bb2_threads.visible = '1' AND bb3_threads.visible = '1' 
ORDER BY bb2_threads.starttime AND bb3_threads.starttime DESC LIMIT 3";

$ergebnis = mysql_query($abfrage) or die mysql_error();
while ($data = mysql_fetch_array($ergebnis))
{
 
Die SQL Anweisung mal mit PHPMYADMIN getestet?

Denn wenn dort auch keine Ergebnisse kommen, liegt der Fehler in deiner Anweisung. Du Könnest z.B. Joins benutzen.
 
Die gegenwärtige Abfrage kann und wird in dieser Form nur nicht erwartete Ergebnisse liefern - Was getan wird, ist die Bildung eines karthesischen Produkts aller Ergebnisse aus Tabelle 1 und Tabelle 2 - Die where Klauses prüft dann, welches Element der Ergebnismenge den Kriterien entspricht. Insgesamt ist die Ausgangssituation keine schöne, lässt sich das gewünschte Resultat nicht wirklich ohne einen wesentlichen Mehraufwand, was die Rechenzeit und -last angeht, erreichen...
SQL:
(
    SELECT
        `bb2`.*
    FROM
        `bb2_threads` AS `bb2`
    WHERE
        `bb2`.`boardid` = '104' AND
        `bb2`.`visible` = '1'
    ORDER BY
        `bb2`.`starttime` DESC
) UNION (
    SELECT
        `bb3`.*
    FROM
        `bb3_threads` AS `bb3`
    WHERE
        `bb3`.`boardid` = '37' AND
        `bb3`.`visible` = '1'
    ORDER BY
        `bb3`.`starttime` DESC
)
LIMIT 3;

Das sollte funktionieren, sofern ich mich nicht vertippt habe. Würden die Select Clauses klar formuliert werden, könnte man immerhin die Order by Klauseln "ausklammern" und so das Query ein wenig beschleunigen. (Stichwort "SELECT `bb*`.`starttime` AS `starttime`" und "ORDER BY `starttime`", analog "WHERE `visible` = 1", etc) Aber das ist ein anderer Schuh.
 
Zurück