Autor Zpráva
Timy
Profil
Provozuji PunBB Fórum a to má na můj vkus trochu podivnou strukturu databáze. Potřeboval bych vytáhnout všechna témata, která založil určitý uživatel. Struktura databáze je taková:



Dopracoval jsem se pouze k tomuto:

select poster_id, topic_id from posts 
where topic_id in
(SELECT topic_id FROM `posts` WHERE poster_id = 2)
order by posted


…což by mi snad mělo vytáhnout všechna témata, do kterých jsem přispěl. Teď bych potřeboval vyfiltrovat jen ty řádky, kde je poster_id = 2 jako první příspěvek v daném topicu (má nejmenší posted). To je alespoň má myšlenka, kterou už do SQL zapsat neumím… Nebo existuje ještě efektivnější cesta?
Alphard
Profil
Ahoj Timy, co to udělat obráceně, prvně si vytáhnout první příspěvky všech témat a pak filtrovat konkrétní uživatele? (jak moc to bude výkonné netuším)
Jestli dobře chápu strukturu tabulky, mohlo by jít
select min(id) from posts group by topic_id

A tohle přes join spojit s původní tabulkou, doplnit where a vybrat, co je potřeba.
Nox
Profil
Jsou skutečně v tabulce "posts" témata? Poslední řádka je topic_id, takže jsem si skoro jistý, že to bereš ze špatné tabulky, pokud chceš jen témata

A tudíž by to bylo jednoduše (nevím jestli je tam "name", prostě něco podobného)
select name from topics where poster_id = 2
Alphard
Profil
Nečekal jsem, že by Timy něco takového přehlédl, ale tabulka topics v punBB skutečně je (aspoň ve verzi 1.3.3) a má následující sloupce:
id	int(10) unsigned
poster	varchar(200)
subject	varchar(255)
posted	int(10) unsigned
first_post_id	int(10) unsigned
last_post	int(10) unsigned
last_post_id	int(10) unsigned
last_poster	varchar(200) NULL
num_views	mediumint(8) unsigned
num_replies	mediumint(8) unsigned
closed	tinyint(1)
sticky	tinyint(1)
moved_to	int(10) unsigned NULL
forum_id	int(10) unsigned

Jen mi tady trochu chybí poster_id
Timy
Profil
Alphard
Nečekal jsem, že by Timy něco takového přehlédl, ale tabulka topics v punBB skutečně je (aspoň ve verzi 1.3.3) a má následující sloupce:
Čekej nečekané :-). To jsem nějak přehlédl, asi i proto, že fórum defaultně neposkytuje nějakou jednoduchou možnost jak ta témata od uživatele zobrazit. Čekal jsem v tom příliš velkou zradu. Díky, dál už si seskládám v pohodě sám :-).
Toto téma je uzamčeno. Odpověď nelze zaslat.

0