Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

MySQL SELCT aus 3 Tabellen

Hallo
Bin gerade dabei ein kleines Board zu schreiben.
Doch nun habe ich schon die ersten Probleme.
Ich möchte die Boards ausgeben:

SELECT boards.name,boards.id...  FROM boards.

Klappt auch alles wunderbar.
Jetzt brauch ein noch eine zwischentabelle(boards_gruppen), damit nur bestimmte User auf die Tabell zugriefen können:
SELECT boards_gruppen,board_id,boards_gruppen.gruppe_id, boards.id.... FROM boards,boards_gruppen
Jetzt folgen natürlich noch WHERE Sachen.
Das Funktioniert auch alles wunderbar, nur jetzt möchte ich weiter gehen und noch eine weiterer tabelle abfragen,
nmlich eine Tabelle aus der ich dann die Themenanzahl berechne.
Ich hatte den SELECT befehl fertig, doch zeigte er mit keine Fehlermeldung, aber auch nicht mehr die Boards an.
Das heißt ja dann, dass die Abfrage 0 Ergebnisse hat.

SELECT BEFEHL:
Session Varriable = gruppe

    $sql="SELECT
                 boards.id  AS id,
                 boards.name AS name,
                 boards.createDate AS createDate,
                 boards. beschreibung AS beschreibung,
                 gruppen_boards.gruppe_id,
                 gruppen_boards.board_id,
                  count(topics.id) AS topics


          FROM
                 boards,
                 gruppen_boards,
                 topics
          WHERE
                 gruppen_boards.gruppe_id ='".$_SESSION["gruppe_id"]."'
          AND    boards.id = gruppen_boards.board_id
          AND    topics.board_id=boards.id

          GROUP BY
                 boards.id, boards.name, boards.createDate,boards.beschreibung,
                 gruppen_boards.gruppe_id, gruppen_boards.board_id, topics.board_id,topics.board_id";
Ja dann dachte ich mir habe ich bestimmt noch einen Fehler drin.
Verkleinere ich mal alles
Auf das einfachste was geht:
SELECT * FROM boards,gruppen_boards,topics

Und siehe da: Nix kein Eintrag.
Dann habe ich die SELECT BEFEHLE in PHPmyAdmin ausgeführt und nix.
Zitat
MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen). (die Abfrage dauerte 0.0007 sek.)

Der will einfach nicht 3 Tabellen abfragen, sobald ich die 3te tablle topics wieder herausnehme, funktioniert wieder alles.
habe schon gegoogelt und alles möglich probiert aber nix.

Was mache ich falsch?
vielen Dank schonmal
der_webi

Antworten zu MySQL SELCT aus 3 Tabellen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo
habe gerade noch etwas herausgefunden.
Wenn es einen Datensatz in topic gibt, klappt das wunderbar, weil ja dann  datensätze vorhanden sind.
Aber das hilft mir ja auch nicht, ich möchte ja auch mal leere "boards" anzeigen  ;D;D;D 

Meiner Meinung nach kann man bei einer Abfrage sich nur auf eine Tabelle beziehen... bitte korrigiert mich, falsch ich nicht richtig liege

greez
decla

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
ich möchte ja auch mal leere "boards" anzeigen  ;D;D;D 

Da könnte ein LEFT JOIN helfen ;)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo

Zitat von: decla link=/hilfen-8-160847-0.html#779576
date=1175169999
Meiner Meinung nach kann man bei einer Abfrage sich nur auf eine Tabelle beziehen... bitte korrigiert mich, falsch ich nicht richtig liege

Dann müsste ich mein Projekt nochmal überdenken  ;D;D
Nein du kannst auf mehrere Tabellen zugreifen. Mansche tabellen hängen auch zusammen.
-----------------------------------------------------------
Da könnte ein LEFT JOIN helfen ;)

Ja könnte und tuts auch.  ;D;D
Besten Dank, die Anzahl der Topics bekomme ich nun raus: mit folgendem SELECT
    $sql="SELECT
             boards.id AS board_id,
             boards.name AS name,
             boards.createDate AS createDate,
             boards.beschreibung AS beschreibung,
             topics.id,
             gruppen_boards.gruppe_id,
             gruppen_boards.board_id,
             count(topics.id) AS anzahl
          FROM
             gruppen_boards,
             boards
          LEFT JOIN topics ON boards.id = topics.board_id
          WHERE
                 gruppen_boards.gruppe_id ='".$_SESSION["gruppe_id"]."'
          AND    boards.id = gruppen_boards.board_id
          GROUP BY
                 boards.id, boards.name, boards.createDate,boards.beschreibung";

So aber ich wollte auch wohl noch die Tabelle "posts" mit einbringen, damit ich die Anzahl der Beiträge im Board auch ermitteln kann.
Doch schon wieder kackt es bei mir. Ich dachte mir ich benutze noch einen LEFT JOIN posts ON posts.topic.id=topic.id

SELECT BEFEHL.
    $sql="SELECT
             boards.id AS board_id,
             boards.name AS name,
             boards.createDate AS createDate,
             boards.beschreibung AS beschreibung,
             topics.id,
             gruppen_boards.gruppe_id,
             gruppen_boards.board_id,
             count(topics.id) AS anzahl,
             count(posts.id) AS anzahl_posts
          FROM
             gruppen_boards,
             boards
          LEFT JOIN topics ON boards.id = topics.board_id
          LEFT JOIN posts ON topics.id=posts.topic_id
          WHERE
                 gruppen_boards.gruppe_id ='".$_SESSION["gruppe_id"]."'
          AND    boards.id = gruppen_boards.board_id
          GROUP BY
                 boards.id, boards.name, boards.createDate,boards.beschreibung";

So ich hoffe man versteht alles!
im 2ten LEFT JOIN versuche ich alle posts auszulesen, wo die topic.board_id=board id ( WHERE ) und dann die topic.id=post_topic_id
Also in Worten:
Alle Posts, die in den Themen des Boards sind.
Das klappt auch wunderbar, nur das komische ist, dass ich dann als Anzahl der topic.id AS anzahl , als die Anzahl der Themen nicht mehr die korekkte zahl angezeigt bekomme, sondern die selbe Anzahl wie bei den Posts.ö

Das kann ich mir irgendwei nicht erklären, denn wenn ich den LEFT Join posts... weglasse kommt wieder die genau Anzahld er Themen, jedoch habe ich dann nicht mehr die Anzahl der posts.

Irgendwie passt mir das alles nicht.
Ich habe mir mal ein MySQL Buch bestellt, um vielleich mal mehr Logik in den Abfragen zu bekommen.
Aber irgendwie stehe ich total auf dem Schlauch vorallem, weil ich eigentlich noch eine weitere Tabelle " user" einbringen möchte, um den letzen Eintrager(user) anzeigen zu lassen, aber ich glaube, das lasse ich erst einmal weg^^  ;D;D
Reicht ja wenn ich das dann bei den topics mache
Sonst muss  ich dann 4 Tabellen abfragen.

Naja erstmal die Post anzahl  8)

vielen dank schonmal
der_webi

« Bitttttte um´hilfe wegen hompageblu1 Homepagebuilder seite erstellt, geuploadet, jedoch nicht da?? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Mainboard
Das Mainboard oder Motherboard ist die Hauptplatine des Computers. Auf ihr sind der Prozessor, der Arbeitsspeicher und die Controller mit den Anschlüssen für Fe...

Motherboard
Siehe Mainboard. ...

Keyboard
Musik Keyboard Ein Keyboard ist im musikalischen Sinne elektronisches Tasteninstrument, dessen Design an ein Klavier angelehnt sind. Es verfügt über eine Reihe...