MYSQL-Unterabfrage SELECT in der JOIN-Klausel
Ok ... nun, ich muss die Unterabfrage in eine einfügenJOIN
Klausel, da es mehr als eine Spalte auswählt und sie in dieSELECT
Klausel erlaubt das nicht, da es mir einen Fehler eines Operanden gibt. Egal, das ist meine Frage:
SELECT
c.id,
c.title,
c.description,
c.icon,
p.id as topic_id,
p.title AS topic_title,
p.date,
p.username
FROM forum_cat c
LEFT JOIN (
SELECT
ft.id,
ft.cat_id,
ft.title,
fp.date,
u.username
FROM forum_topic ft
JOIN forum_post fp ON fp.topic_id = ft.id
JOIN user u ON u.user_id = fp.author_id
WHERE ft.cat_id = c.id
ORDER BY fp.date DESC
LIMIT 1
) p ON p.cat_id = c.id
WHERE c.main_cat = ?
ORDER BY c.list_no
Nun das Wichtige was ich hier brauche ...FOR EACH
Kategorie möchte ich in jeder Kategorie den neuesten Post- und Thementitel anzeigen. Diese select-Anweisung durchläuft jedoch INNERHALB einer foreach-Schleife die allgemeinen Kategorien, die sich in meinem main_cat befindet. Es gibt also 5 Hauptkategorien mit 3-8 Unterkategorien. Dies ist die Unterkategorienabfrage. ABER FÜR JEDE Unterkategorie muss ich den neuesten Beitrag abrufen. Es wird jedoch nur diese SELECT-Abfrage für jede Hauptkategorie ausgeführt, sodass nur DER NEUESTE Beitrag aus allen Unterkategorien ausgewählt wird. Ich möchte den neuesten Beitrag für JEDE Unterkategorie abrufen , aber ich führe diese Abfrage lieber nicht für jede Unterkategorie aus ... da ich möchte, dass die Seite schnell geladen wird. ABER ERINNERN SIE SICH, dass einige Unterkategorien KEINEN neuesten Beitrag haben, da einige von ihnen möglicherweise noch nicht einmal ein Thema enthalten! Also also die Linke mitmachen.
Weiß jemand, wie man das macht?
Übrigens gibt es einen Fehler, den es mir gibt(WHERE ft.cat_id = c.id)
in der Unterabfrage weilc.id
ist eine unbekannte Spalte. Aber ich versuche es aus der äußeren Abfrage heraus zu referenzieren, kann mir jemand auch in dieser Angelegenheit helfen?
Vielen Dank!
Alle Tabellen:
forum_cat (Subcategories)
-----------------------------------------------
ID, Title, Description, Icon, Main_cat, List_no
forum_topic (Topics in each subcategory)
--------------------------------------------
ID, Author_id, Cat_id, Title, Sticky, Locked
forum_post (Posts in each topic)
--------------------------------------------
ID, Topic_id, Author_id, Body, Date, Hidden'
Die Hauptkategorien sind in einer Funktion aufgelistet. Ich habe sie nicht in der Datenbank gespeichert, da es eine Verschwendung von Speicherplatz war, da sie sich nie ändern. Es gibt jedoch 7 Hauptkategorien.