SQL Abfrage mit zwei Tabellen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
anzeigen
aufgefallen
auslese
bringen
code
datenbank
folgende abfrage
folgendes problem
forum
frage
helfen
jeweiligen forum
limit
ordern
ordnen
richtige ergebnis
tabelle
vorhanden normalfall
zugreifen
-
Hallo Leutz,
Ich habe mir mal ein eigenes forum gebastelt welches auch so einwandfrei funktioniert jedoch habe ich folgendes Problem wenn ich die Themen nach den letzten Beiträge ordnen will zeigt er mir das Thema für jeden Beitrag an sprich 2 Beiträge in einem Thema=2 mal das Thema in der Übersicht momentan habe ich folgende Abfrage drin:
SELECT * FROM board_topics LEFT JOIN board_posts ON board_topics.topic_id = board_posts.topic_id WHERE board_topics.topic_id=board_posts.topic_id AND board_topics.forum_id=\'$forum_id\' ORDER BY board_posts.post_time DESC
Weil ich hatte gegooglet wie man das bei einer anderen Tabelle machen könnte dort kam Left Join und dann habe ich mir das daraus gebastelt. Könntet ihr mir bitte helfen
mfG
Chris
PS: Ja sry ist mir jetz erst aufgefallen das der Titel verkehrt ist es muss natürlich Tabelle und nicht Datenbank heißen...
Beitrag geändert: 22.12.2007 12:12:46 von ghostrider -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich weiß nicht ob ich dich richtig verstehe aber vielleicht hilft ein \"LIMIT 1\" in der SQL Abfrage...
-
Hallo,
sorry aber deine Frage ist nicht ganz eindeutig...
Deine SQL Abfrage
SELECT * FROM board_topics LEFT JOIN board_posts ON board_topics.topic_id = board_posts.topic_id WHERE board_topics.topic_id=board_posts.topic_id AND board_topics.forum_id=\'$forum_id\' ORDER BY board_posts.post_time DESC
gibt folgendes aus:
Listet ALLE topics auf mit dem dazugehörigen Thema d.h. sind zu einem Topic mehrere Themen vorhanden (Normalfall) werden die Titel der Topics doppelt aufgelistet.
Die Tabelle sieht dann in etwa so aus...
topic.id topic.name thema.id thema.topicid thema.name
1 Testtopic 1 1 das erste Thema1
1 Testtopic 2 1 das zweite Thema1
2 Zweittopic 3 2 erste Thema2
2 Zweittopic 4 2 zweite Thema2
Wie liest du denn die Themen aus?
...willst du zuerst nur die Topics auslesen und danach die Themen oder nur die Themen nach Topic sortiert und wenn ein neues topic anfängt, dass du dann das neue Topic ausgibst?
Grüßle -
Das folgende sollte das richtige Ergebnis bringen, wenn du wirklich nur die Themenübersicht im jeweiligen Forum anzeigen willst. Falls du auch auf gelöschte Beiträge zugreifen willst änder das INNER JOIN in ein LEFT OUTER JOIN um. Und Code immer schön einrücken ;)
SELECT * FROM board_topics AS bt INNER JOIN board_posts AS bp ON bt.topic_id = bp.topic_id WHERE bp.forum_id = \'$forum_id\' ORDER BY pb.post_time DESC
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage